进程间通信 SOCKET Server
来源:互联网 发布:便宜质量好的淘宝店 编辑:程序博客网 时间:2024/05/21 05:21
#include <stdlib.h>#include <dirent.h>#include <time.h>#include <unistd.h>#include <dirent.h>#include <sys/types.h>#include <errno.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <error.h>int server(){int iSockfd = socket(PF_INET,SOCK_STREAM,0); /*1. 准备socket*/if(iSockfd == -1){ perror("socket:"); return 0;}/*2. 准备地址*/struct sockaddr_in addr;addr.sin_family = PF_INET;addr.sin_port = htons(17777);inet_aton("127.0.0.1",&addr.sin_addr);int flag=1,len=sizeof(int);//解决端口TIME_WAIT状态,无法连接if( setsockopt(iSockfd, SOL_SOCKET, SO_REUSEADDR, &flag, len) == -1){ return -1;}int iRes = bind(iSockfd, (struct sockaddr*)&addr, sizeof(addr)); /*3.绑定*/if(iRes == -1){ perror("Bind 失败:"); return -1;}iRes = listen(iSockfd, 100); /*4.监听*/if(iRes == -1){ perror("监听失败:"); return -1;}int infds;while(1){ /*5.等待客户端连接*/ struct sockaddr_in fromaddr; socklen_t len = sizeof(fromaddr); /*6.和客户端通信*/ /*6.1接收客户端数据*/ char buf[100] = {0}; struct timeval timeout; timeout.tv_sec = 2; timeout.tv_usec = 0; fd_set Readyfd; FD_ZERO(&Readyfd); FD_SET(iSockfd, &Readyfd); infds = select(iSockfd+1, &Readyfd, NULL, NULL, &timeout); if(infds>0) { if(FD_ISSET(iSockfd, &Readyfd)) { int fd = accept(iSockfd, (struct sockaddr*)&fromaddr,(socklen_t *)&len); if(-1 == fd) { /*告警信息 不影响下一个资源申请 所以一直是监听状态*/ continue; } if(read(fd, buf, 100)<=0) { printf("-----Error\n"); close(fd); continue; } else { printf("------buf=%s\n",buf); //sleep(5);//write(fd,(char *) "Server send date", 100); sleep(5); if(write(fd,(char *) "Server send date", 100)<=0) { close(fd); continue; } } } } else if(infds < 0) { perror("错误"); break; } else {printf("超时处理\n");//write(iSockfd+1,(char *) "---Server--- Send", 100); continue; } } close(iSockfd);return 0;}int main(){server();return 0;}
0 0
- 进程间通信 SOCKET Server
- 进程间通信-socket
- 进程间通信---------socket
- socket进程间通信
- socket进程间通信
- Socket进程间通信
- 进程间通信---Socket
- Socket 实现进程间通信
- socket实现进程间通信
- Linux 进程间通信 socket
- Socket进程间通信原理
- socket实现进程间通信
- UNIX SOCKET 进程间通信
- socket实现进程间通信
- linux socket 进程间通信
- 进程间通信 SOCKET Client
- Linux 进程间通信 socket
- Socket实现进程间通信
- 如何在QML应用中得到一个Item的所有属性,信号及方法
- Codeforces 526C - Om Nom and Candies(贪心,暴力)
- Leetcode 32 Longest Valid Parentheses
- 结合递归实现二分查找
- 【LeetCode刷题记录】Two Sum
- 进程间通信 SOCKET Server
- 内网渗透方面的总结
- DataType.h
- “全员编程,广泛嵌入”(七)—— 智能硬件
- springMVC参数的传递方式(1.通过@PathVariabl获取路径参数,2.@ModelAttribute获取数据,3.HttpServletRequest取参,4@RequestParam)
- Android 圆角图片
- CF #302 div2
- 25匹马最少多少次可以选出前3
- iOS中使用RegexKitLite来试用正则表达式