Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Sendto不';重复做这件事不起作用_C_Linux_Sockets - Fatal编程技术网

C Sendto不';重复做这件事不起作用

C Sendto不';重复做这件事不起作用,c,linux,sockets,C,Linux,Sockets,在C中使用sendto()时,我遇到了一个奇怪的问题。我有以下代码: struct sockaddr_in currSocket; int currSocketLength = sizeof(currSocket); memset((char *)&currSocket, 0, sizeof(currSocket)); currSocket.sin_family = AF_INET; currSocket.sin_port = htons(serverPortNumber); // ad

在C中使用sendto()时,我遇到了一个奇怪的问题。我有以下代码:

struct sockaddr_in currSocket;
int currSocketLength = sizeof(currSocket);
memset((char *)&currSocket, 0, sizeof(currSocket));
currSocket.sin_family = AF_INET;
currSocket.sin_port = htons(serverPortNumber);
// add the server IP address
inet_aton(serverIP, &currSocket.sin_addr);

int send_result = sendto(masterSocket, bufferToSend , 1000, 0, (struct sockaddr *) &currSocket, currSocketLength);
if (send_result < 0) {
    perror("Something is wrong");
}
bzero(bufferToSend, 1000);

知道为什么会发生这种情况吗?

我没有为ipAddress分配足够的空间。将它作为指针,当它应该是char[]时,我使用strcpy复制到它

你能描述一下你是如何验证数据发送失败的,而不是接收器端的问题吗?上面的程序应该是一个处理多个请求的隧道。每次有人进来,我都会创建一个currSocket(如上所示),并将其发送到适当的位置。我在没有隧道的情况下测试了receiver应用程序,它能够接收消息,所以我知道它是这样工作的。建议你抓取一份Wireshark的副本,看看实际的电线上发生了什么。这将让您知道问题是否出在该代码上,还是出在接收器上。我复制粘贴了该代码,没有进行任何修改,在代码周围添加了约20行代码以使其编译和运行,并且多次成功发送数据。请花点时间把你的代码片段转换成一个代码,这样你就可以确保你包含了所有相关的信息。我会调查的。谢谢你,另一个人
// here the IP address is fine
printf("%s\n", ipAddress);
char bufferFromSocket[512];
int amount_read = read(masterSocket, bufferFromSocket, 512);
// here the IP address is overwritten by whatever is in bufferFromSocket
printf("%s\n", ipAddress);