客户端必须向服务器发送 2 个字符串,服务器必须向客户端发回一个字符串,并且并行处理客户端。这两个实体在 Unix 下使用数据报交换数据。我的问题是,当我使用线程时,我无法将数据发送回客户端,也无法读取数据。此外,即使我不使用线程,我也无法将消息正确发送回客户端。
\n\n服务器是:
\n\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <pthread.h>\n#include <stdio.h>\n#include <string.h>\n#include <stdint.h>\n#include <signal.h>\n#include <unistd.h>\n#include <stdlib.h>\n\n\nint sd = 0;\nvoid* worker(void* argm) {\n struct sockaddr_in* adress = (struct sockaddr_in*) argm;\n char s[100],s2[100];\n int adressLen;\n\n recvfrom(sd, s, sizeof(s), 0, (struct sockaddr*) &adress, &adressLen);\n perror("recv");\nRun Code Online (Sandbox Code Playgroud)\n\nPerror显示recv:非套接字上的套接字操作
\n\n printf("I received: %s\\n",s);\n\n strcat(s2,"sample");\n s2[strlen(s2)]=\'\\0\';\n sendto(sd, &s2, sizeof(s2), 0, (struct sockaddr*) &adress,sizeof(adress));\n perror("send");\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n最后perror()显示发送:非套接字上的套接字操作。\n这也会导致客户端无限等待来自服务器的字符串。
int main(int argc, char* argv[]) {\n int sd;\n int servPort;\n\n struct sockaddr_in servAddr; \n\n if …Run Code Online (Sandbox Code Playgroud)