Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
TCP sendto返回长度,但服务器不返回';我没有收到任何东西_C_Sockets - Fatal编程技术网

TCP sendto返回长度,但服务器不返回';我没有收到任何东西

TCP sendto返回长度,但服务器不返回';我没有收到任何东西,c,sockets,C,Sockets,我正在尝试重用已连接的套接字fd 我已经创建了connfd,并用初始化代码将其连接到服务器。 在其他函数中,我不再重新连接它,而是直接尝试connfd 在服务器上 connfd = accept(listenfd, (struct sockaddr *)&cliAddr, &len); recvfrom(connfd, msg, TCP_DATA_LEN, 0, (struct sockaddr *)&cliAddr, &len); 客户方面 sendto(so

我正在尝试重用已连接的套接字fd

我已经创建了connfd,并用初始化代码将其连接到服务器。 在其他函数中,我不再重新连接它,而是直接尝试connfd

在服务器上

connfd = accept(listenfd, (struct sockaddr *)&cliAddr, &len);
recvfrom(connfd, msg, TCP_DATA_LEN, 0, (struct sockaddr *)&cliAddr, &len);
客户方面

sendto(sockfd, messageString, strlen(messageString), 0, (struct sockaddr *)&servAddr, sizeof(servAddr));
sockfd来自

socket(AF_INET, SOCK_STREAM, 0);
connect(sockfd, (struct sockaddr *)&servAddr, sizeof(servAddr));

但是在服务器上,我没有收到任何消息。

每个端口的代码是否将“connect()”应用到各自的套接字

服务器需要首先接受()然后侦听(),其中侦听()将返回一个新套接字

这个新套接字是用来从客户端接收()的

recvfrom()和sendto()用于数据报(UDP)套接字,而不是套接字流(TCP)套接字

因此,代码应该使用send()和recv()

建议阅读代码使用的系统函数的手册页

下面是一个示例的链接,请注意,该示例生成了一个线程来处理连接。对于单个连接,不需要螺纹


sendto
recvfrom
用于非面向连接的套接字(SOCK_DGRAM而不是SOCK_STREAM),如果在连接的套接字上使用它们,EISCON可能会失败。即使它们有效,额外的参数也毫无意义,因此永远没有理由在连接的套接字上使用它们

只需在连接的套接字上使用
send
recv

“重用连接的套接字fd”--请确切地告诉我们这意味着什么。你能展示比这更多的上下文吗?另外,为什么重用套接字fd对您很重要?