当前位置: 首页 > news >正文

如何做网站网页无锡华士镇网站建设

如何做网站网页,无锡华士镇网站建设,网站联系我们模板,安阳县地图高清全图目录 多线程并发服务器模型服务器实现 select的TCP服务器模型服务器实现 select的TCP客户端实现 多线程并发服务器 模型 sfd socket(); bind(); listen(); while(1){newfd accept();pthread_create(tid, NULL, do_cli_msg, [newfd, cin]集合);pthread_detach(tid); } … 目录 多线程并发服务器模型服务器实现 select的TCP服务器模型服务器实现 select的TCP客户端实现 多线程并发服务器 模型 sfd socket(); bind(); listen(); while(1){newfd accept();pthread_create(tid, NULL, do_cli_msg, [newfd, cin]集合);pthread_detach(tid); } close(sfd);void* do_cli_msg(void* arg){while(1){recv();send(); }close(newfd); }服务器实现 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include arpa/inet.h #include sys/socket.h #include netinet/in.h #include pthread.h#define PORT 8080 #define IP 192.168.124.38 #define MAX_CLIENTS 5 #define BUFFER_SIZE 1024void *handle_client(void *arg); int server_fd, new_socket, valread; struct sockaddr_in address; int opt 1; int addrlen sizeof(address); char buffer[BUFFER_SIZE] {0}; fd_set readfds;int main() {// 创建socketif ((server_fd socket(AF_INET, SOCK_STREAM, 0)) 0) {perror(socket failed);exit(EXIT_FAILURE);}// 设置端口复用if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, opt, sizeof(opt))) {perror(setsockopt);exit(EXIT_FAILURE);}address.sin_family AF_INET; address.sin_addr.s_addr IP;address.sin_port htons(PORT);// 绑定if (bind(server_fd, (struct sockaddr *)address, sizeof(address))0) {perror(bind failed);exit(EXIT_FAILURE);}// 监听if (listen(server_fd, MAX_CLIENTS) 0) {perror(listen);exit(EXIT_FAILURE);}printf(服务器端口%d...\n, PORT);while (1) {// 接受新的连接请求if ((new_socket accept(server_fd, (struct sockaddr *)address, (socklen_t*)addrlen))0) {perror(accept);exit(EXIT_FAILURE);}// 为新连接创建线程pthread_t client_thread;if(pthread_create(client_thread, NULL, handle_client, (void*) new_socket) 0){perror(create thread);exit(EXIT_FAILURE);}// 分离线程防止资源泄漏pthread_detach(client_thread);}return 0; }void* handle_client(void* arg){int sock *((int*)arg);char client_message[BUFFER_SIZE];while(1) {memset(client_message, 0, sizeof(client_message));valread read(sock , client_message, BUFFER_SIZE);if(valread 0){// 发生错误或客户端关闭连接break;}printf(Client %d says: %s\n, sock, client_message);// 处理客户端消息并准备响应char *response 服务器已就绪\n;send(sock , response , strlen(response) , 0 );}close(sock);printf(关闭socket %d\n, sock);pthread_exit(NULL);}select的TCP服务器 模型 sfd socket(); bind(); listen(); while(1){tempfds readfds;select(maxfd1, tempfds, NULL, NULL, NULL);for(int i0; imaxfd; i){if(FD_ISSET(i, temfds) 0) continue;if(0 i){ } else if(sfd i){newfdaccept()FD_SET(newfd, readfds);maxfdnewfdmaxfd?newfd:maxfd; } else{resrecv(i, );if(0 res){FD_CLR(i, readfds);close(i);while(FD_ISSET(maxfd, readfds)0 maxfd--0); }send(i, ); } } } close(sfd);服务器实现 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include errno.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include sys/select.h#define PORT 12345 int main() {int listenfd, newfd, maxfd, i, j, nbytes;struct sockaddr_in server_addr, client_addr;socklen_t addrlen;char buffer[1024];fd_set master_set, read_fds;if ((listenfd socket(AF_INET, SOCK_STREAM, 0)) -1) {perror(socket);exit(1);}server_addr.sin_family AF_INET;server_addr.sin_port htons(PORT);server_addr.sin_addr.s_addr 192.168.124.38;memset((server_addr.sin_zero), \0, 8);if (bind(listenfd, (struct sockaddr *)server_addr, sizeof(struct sockaddr)) -1) {perror(bind);close(listenfd);exit(1);}if (listen(listenfd, 10 ) -1) {perror(listen);close(listenfd);exit(1);}FD_ZERO(master_set);FD_ZERO(read_fds);FD_SET(listenfd, master_set);maxfd listenfd;while (1) {read_fds master_set;if (select(maxfd 1, read_fds, NULL, NULL, NULL) -1) {perror(select);exit(1);}for (i 0; i maxfd; i) {if (FD_ISSET(i, read_fds)) {if (i listenfd) {addrlen sizeof(client_addr);if ((newfd accept(listenfd, (struct sockaddr *)client_addr, addrlen)) -1) {perror(accept);} else {FD_SET(newfd, master_set);if (newfd maxfd) {maxfd newfd;}printf(New connection from %s on socket %d\n, inet_ntoa(client_addr.sin_addr), newfd);}} else {if ((nbytes recv(i, buffer, sizeof(buffer), 0)) 0) {if (nbytes 0) {printf(Socket %d hung up\n, i);} else {perror(recv);}close(i);FD_CLR(i, master_set);} else {for (j 0; j nbytes; j 0) {int sent send(i, buffer j, nbytes - j, 0);if (sent -1) {perror(send);close(i);FD_CLR(i, master_set);break;}j sent;}}}}}}close(listenfd);return 0; } select的TCP客户端 实现 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include errno.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include sys/select.h#define SERVER_IP 127.0.0.1 // 服务器 IP 地址 #define SERVER_PORT 12345 // 服务器端口int main() {int sockfd, maxfd, nbytes;struct sockaddr_in server_addr;fd_set read_fds;char buffer[1024];if ((sockfd socket(AF_INET, SOCK_STREAM, 0)) -1) {perror(socket);exit(1);}server_addr.sin_family AF_INET;server_addr.sin_port htons(SERVER_PORT);server_addr.sin_addr.s_addr inet_addr(SERVER_IP);memset((server_addr.sin_zero), \0, 8);if (connect(sockfd, (struct sockaddr *)server_addr, sizeof(struct sockaddr)) -1) {perror(connect);exit(1);}printf(Connected to server on socket %d\n, sockfd);while (1) {FD_ZERO(read_fds);FD_SET(sockfd, read_fds);FD_SET(STDIN_FILENO, read_fds);maxfd (sockfd STDIN_FILENO ? sockfd : STDIN_FILENO) 1;if (select(maxfd, read_fds, NULL, NULL, NULL) -1) {perror(select);exit(1);}if (FD_ISSET(STDIN_FILENO, read_fds)) {if (fgets(buffer, sizeof(buffer), stdin) NULL) {break;}nbytes strlen(buffer);if (send(sockfd, buffer, nbytes, 0) -1) {perror(send);exit(1);}}if (FD_ISSET(sockfd, read_fds)) {if ((nbytes recv(sockfd, buffer, sizeof(buffer), 0)) 0) {if (nbytes 0) {printf(Server hung up\n);} else {perror(recv);}break;} else {printf(Received from server: %.*s, nbytes, buffer);}}}close(sockfd);return 0; }
http://www.w-s-a.com/news/164145/

相关文章:

  • 北京市住房建设投资建设网站做商城网站要哪些流程
  • seo网站改版杭州建设局官网
  • 物流网站建设策划书泰然建设网站
  • 百度做网站的费用采集发布wordpress
  • 网站运维公司有哪些防录屏网站怎么做
  • 昆明做网站seo的网站制作专业
  • 聊城制作手机网站公司wordpress 头条
  • 商城微网站模板一般电商网站做集群
  • winserver2008上用iis发布网站嵊州网站制作
  • 网站内页权重怎么查辽宁建设工程信息网怎么上传业绩
  • 丰都网站建设价格镇江网站制作费用
  • app手机网站建设黄网站建设定制开发服务
  • 百度网盘app下载徐州优化网站建设
  • 附近网站电脑培训班展台设计方案介绍
  • 河南便宜网站建设价格低上海高端室内设计
  • 保险网站有哪些平台wordpress会员vip购买扩展
  • 网站怎么做图片转换广州车陂网站建设公司
  • 下载flash网站网站设计书的结构
  • 水利建设公共服务平台网站放心网络营销定制
  • 设计网站过程wordpress+分页静态
  • 临海网站制作好了如何上线如果安装wordpress
  • 长沙 学校网站建设网站制作价格上海
  • 九江网站推广徽hyhyk1国家住房部和城乡建设部 网站首页
  • 阿克苏网站建设咨询动漫设计与制作属于什么大类
  • 网站编辑做多久可以升职wordpress版权修改
  • 网站开发维护成本计算国外外贸平台
  • 简单的招聘网站怎么做购物网站功能报价
  • 哪个网站做中高端衣服建设自己网站的流程
  • 网站建设概况做网站的是怎么赚钱的
  • 网站发布信息的基本流程现在都不用dw做网站了吗