我正在尝试编写一个客户端程序和一个服务器程序,当客户端连接到服务器时,服务器会将文件中的随机字符串发送回它.这是我到目前为止(从文件中省略):
server.c#includeclient.c#include #include #include #include #include #include int listfd; int connfd; int main(int argc, char *argv[]){ /* * Create Sockets */ listfd = socket(AF_UNIX, SOCK_STREAM, 0); if(listfd == -1) exit(-1); struct sockaddr saddr = {AF_UNIX, "server"}; socklen_t saddrlen = sizeof(struct sockaddr) + 6; bind(listfd, &saddr, saddrlen); listen(listfd, 10); fflush(stdout); printf("Running...\n"); /* * Listen for connections * and send random phrase on accept */ while(1){ connfd = accept(listfd, NULL, NULL); int r = rand() % num_of_lines; //Pick random phrase/hint pair write(connfd, phrases[r], strlen(phrases[r])); close(connfd); sleep(1); } exit(0); }
#include#include #include #include #include #include #include int main(int argc, char *argv[]) { int sock; int conn; struct sockaddr saddr = {AF_UNIX, "server"}; socklen_t saddrlen = sizeof(struct sockaddr) + 6; sock = socket(AF_UNIX, SOCK_STREAM, 0); conn = connect(sock, &saddr, saddrlen); char BUFF[1024]; read(sock, BUFF, 1024); printf("%s", BUFF); return 0; }
当我尝试在客户端打印时出现问题.我运行服务器,但是当我运行客户端时,它只打印垃圾字符,我不完全确定是什么导致了这一点.
非常感谢任何帮助,谢谢!
编辑:我想出了我的问题.因为服务器套接字绑定到"服务器",这也是可执行文件的名称,这导致了很多问题.
重命名sockaddr.sa_data字段修复了我的问题.