linux c epoll服务器windows 客户端通信

  • w9_234741
    了解作者
  • 320.1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-21 09:51
    上传日期
linux epoll 服务器,windows socket客户端
epoll.rar
  • client
  • mingw2.95
  • client.exe
    428.3KB
  • client.o
    294KB
  • client.cpp
    1.8KB
  • client.cfp
    12.3KB
  • client.o
    814.5KB
  • client.c~
    0B
  • server
  • Makefile
    113B
  • server.c
    2.7KB
内容介绍
#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h rel='nofollow' onclick='return false;'> #include <stdlib.h> #include <string.h> #include <sys/epoll.h> #include <malloc.h> #define MAX_EVENTS 10 struct p_info { char msg[1024]; int p_info_id; }; int main(int argc, char * argv[]) { int server_sockfd; int client_sockfd; int len; char buffer[1024]; struct sockaddr_in my_addr; struct sockaddr_in remote_addr; int sin_size; memset(&my_addr,0,sizeof(my_addr)); my_addr.sin_family=AF_INET; my_addr.sin_addr.s_addr=INADDR_ANY; my_addr.sin_port=htons(8000); if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0) { perror("socket"); return 1; } if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0) { perror("bind"); return 1; } listen(server_sockfd,5); sin_size=sizeof(struct sockaddr_in); int epoll_fd; epoll_fd=epoll_create(MAX_EVENTS); if(epoll_fd==-1) { perror("epoll_create failed"); exit(EXIT_FAILURE); } struct epoll_event ev; struct epoll_event events[MAX_EVENTS]; ev.events=EPOLLIN; ev.data.fd=server_sockfd; if(epoll_ctl(epoll_fd,EPOLL_CTL_ADD,server_sockfd,&ev)==-1) { perror("epll_ctl:server_sockfd register failed"); exit(EXIT_FAILURE); } int nfds; while(1) { nfds=epoll_wait(epoll_fd,events,MAX_EVENTS,-1); if(nfds==-1) { perror("start epoll_wait failed"); exit(EXIT_FAILURE); } int i; for(i=0;i<nfds;i++) { if(events[i].data.fd==server_sockfd) { if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0) { perror("accept client_sockfd failed"); exit(EXIT_FAILURE); } ev.events=EPOLLIN; ev.data.fd=client_sockfd; if(epoll_ctl(epoll_fd,EPOLL_CTL_ADD,client_sockfd,&ev)==-1) { perror("epoll_ctl:client_sockfd register failed"); exit(EXIT_FAILURE); } printf("accept client %s\n",inet_ntoa(remote_addr.sin_addr)); } else { struct p_info p_msg; len=recv(client_sockfd,(char *)&p_msg,sizeof(struct p_info),0); if(len<0) { perror("receive from client failed"); exit(EXIT_FAILURE); } char msg[100]; memcpy(msg,p_msg.msg,sizeof(p_msg.msg)); printf("%d %s\n",len,msg); memset(&p_msg,0,sizeof(p_msg)); strcpy(p_msg.msg,"hello client"); p_msg.p_info_id=1; send(client_sockfd,(char *)&p_msg,sizeof(p_msg),0); } } } return 0; }
评论
    相关推荐
    • WINdows服务器配置
      这是学习Windows服务器配置的核心资料,值得你一看
    • Cerberus FTP服务器 Windows 64位 v8.0.0.8
      一个多通道的Windows FTP服务器,只占用很少的内存及CPU,它的界面容易操作并可通过系统托盘来进行访问,并且这个软件可提供给用户文件访问及管理的权限,连接限制,时间,IP访问,多路径优先权设置等功能。
    • Windows服务器集群构建
      感觉还不错,大家对集群有兴趣的可以看看。
    • windows服务器远程桌面
      windows服务器远程桌面 windows服务器远程桌面 windows服务器远程桌面 windows服务器远程桌面
    • redis服务器windows版本
      redis服务器windows版本,此版本为2.6.12,包含32位与64位 由于最新版本的redis没有编译,该版本可以再win7与win xp上运行,对于开发来说已经足够。 redis-server.exe redis-benchmark.exe redis-cli.exe redis-check...
    • HTTP代理服务器Windows下实现
      HTTP代理服务器Windows下实现!!!!!!!!!!!!!
    • nginxfor HTTP服务器Windows
      Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年
    • windows服务器配置2003
      windows服务器配置2003windows服务器配置2003windows服务器配置2003
    • Tomcat 服务器windows和linux 版本
      包含了多个tomcat服务器的版本,linux与windows的都有
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等