
作业社区
探索学习新天地,共享知识资源!
北城半夏4806197 的学生作业:
老师,我这里有一个报错,不明白为什么,求解答! 我查了一下说是ip被占用,但我尝试了还是没解决 #include #include #include #include #include /* See NOTES */ #include #include #include #define BACKLOG 10 //listen长度 int main(int argc, char const *argv[]) { int sfd,ret,cfd; struct sockaddr_in svr_addr,cli_addr; socklen_t len = sizeof(struct sockaddr_in); ssize_t rbytes = 0,sbytes=0; char buffer[1024] = {0}; if(argc < 3) { fprintf(stderr,"Usage : %s ip port!\n",argv[0]); exit(EXIT_FAILURE); } sfd = socket(AF_INET,SOCK_STREAM,0); if(sfd == -1) { perror("[ERROR] socket():"); exit(EXIT_FAILURE); } bzero(&svr_addr,sizeof(svr_addr)); //清零 svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = inet_addr(argv[1]); //绑定ip地址与端口号 ret = bind(sfd,(const struct sockaddr *)&svr_addr, sizeof(struct sockaddr_in)); if (ret == -1) { perror("[ERROR] bind()"); exit(EXIT_FAILURE); } //设置套接字为监听状态,建立监听队列 ret = listen(sfd,BACKLOG); if(ret == -1) { perror("[ERROR] listen():"); exit(EXIT_FAILURE); } //建立连接,并产生新的客户端套接字cfd用于数据收发 cfd = accept(sfd,(struct sockaddr *)&cli_addr,&len); if(cfd == -1) { perror("[ERROR] accept():"); exit(EXIT_FAILURE); } printf("ip : %s , port : %d\n",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port)); //客户端从键盘接收发送数据 for(;;) { //从客户端发送数据 rbytes = recv(cfd,buffer,sizeof(buffer),0); if(rbytes == -1) { perror("[ERROR] recv():"); exit(EXIT_FAILURE); } else if(rbytes == 0) { printf("The server hsa been shut down.\n"); } else if(rbytes > 0) { memset(buffer, 0, sizeof(buffer)); sbytes = send(cfd,buffer,sizeof(buffer),0); if(sbytes == -1) { perror("[ERROR] send():"); exit(EXIT_FAILURE); } printf("Receive: %s\n", buffer); if(strncmp(buffer,"quit",4) == 0) break; } } close(cfd); close(sfd); return 0; } 【图片】【图片】




