TCP sendto返回长度,但服务器不返回';我没有收到任何东西
我正在尝试重用已连接的套接字fd 我已经创建了connfd,并用初始化代码将其连接到服务器。 在其他函数中,我不再重新连接它,而是直接尝试connfd 在服务器上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
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对您很重要?