Ume*_*ooq 1 c pointers network-programming segmentation-fault
我从服务器传递一个指针数组到客户端.但是在客户端,当我拒绝接收到的数组时,我会得到分段错误.服务器和客户端都是操作系统的本地服务器.我认为我在指针中犯了一些错误并违反了一些指针规则.
这是代码:
Server.c
struct WinGoku goku,windows,gates;
struct WinGoku *array[3];
array[0] = &goku;
array[1] = &windows;
array[2] = &gates;
send(conSocket, array, sizeof(&array), 0);
Run Code Online (Sandbox Code Playgroud)
Client.c
struct WinGoku **array;
int rec = recv(mySocket, array, 4, 0);
printf("bytes Recieved %d\n", rec);
int i;
for(i = 0; i<3;i++)
{
printf("%s\n",array[i]->test);
}
Run Code Online (Sandbox Code Playgroud)
struct WinGoku仅包含char[50]我正在复制数据的地方strcpy.
发送和接收不返回-1,因此可以正确发送和接收数据.
我在做什么错?
服务器和客户端都是操作系统的本地服务器.我确信我在指针中犯了一些错误,并且在指针规则上做出了假设.
指针位于称为"虚拟内存"的空间中.范围仅限于单个流程.
尽管在同一台计算机上,每个服务器,客户端都有自己的虚拟内存空间.这些指针在每个指针中都是无效的.您必须序列化(并且通常编组)要通过网络发送的内存内容.