您好,欢迎来到微智科技网。
搜索
您的当前位置:首页linux网路编程socket做服务端代码

linux网路编程socket做服务端代码

来源:微智科技网
Linux网路编程用socket函数创建客户端,下面例子执行成功,客户端在我的另一个文档。 执行是:./可执行文件名 端口号

#include #include #include #include #include #include #include #include #include

void sig_handler(int signo) { pid_t pid; int stat; pid=waitpid(-1,&stat,WNOHANG); while(pid>0){ printf(\"child process terminated (PID: %ld)\\n\ pid=waitpid(-1,&stat,WNOHANG); } return; }

int main(int argc,char *argv[]) { socklen_t clt_addr_len; int listen_fd; int com_fd; int ret; int i; static char recv_buf[1024]; int len; int port; pid_t pid; struct sockaddr_in clt_addr; struct sockaddr_in srv_addr; if(argc!=2){ printf(\"Usage: %s port\\n\ return 1; } port=atoi(argv[1]); if(signal(SIGCHLD,sig_handler)<0){ perror(\"cannot set the signal\"); return 1;

}

listen_fd=socket(PF_INET,SOCK_STREAM,0); if(listen_fd<0){ perror(\"cannot create listening socket\"); return 1; }

memset(&srv_addr,0,sizeof(srv_addr)); srv_addr.sin_family=AF_INET;

srv_addr.sin_addr.s_addr=htonl(INADDR_ANY); srv_addr.sin_port=htons(port);

ret=bind(listen_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr)); if(ret==-1){ perror(\"cannot bind server socket\"); close(listen_fd); return 1; }

ret=listen(listen_fd,5); if(ret==-1){ perror(\"cannot listen the client connect request\"); close(listen_fd); return 1; } while(1){ len=sizeof(clt_addr); com_fd=accept(listen_fd,(struct sockaddr*)&clt_addr,&len); if(com_fd<0){ if(errno==EINTR){ continue; }else{ perror(\"cannot accept client connect request\"); close(listen_fd); return 1; } } pid=fork(); if(pid<0){perror(\"cannot create the child process\"); close(listen_fd); return 1; }else if(pid==0){ while((len=read(com_fd,recv_buf,1024))>0){ recv_buf[len] = '\\0'; printf(\"Message from client(%d): %s\\n\ if(recv_buf[0]=='@') break;

}

} for(i=0;iclose(com_fd); return 0; }else close(com_fd);

return 0;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务