4
碳烧吧
全部回复
仅看楼主
level 6
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/epoll.h>
int main()
{
     int fd;
     struct sockaddr_in server;
     struct sockaddr_in client;
     bzero(&server,sizeof(server));
     fd=socket(AF_INET,SOCK_DGRAM,0);
     server.sin_family=AF_INET;
     server.sin_port=htons(1234);
     server.sin_addr.s_addr=htonl(INADDR_ANY);
     bind(fd,(struct sockaddr *)&server,sizeof(server));
     client.sin_family=AF_INET;
     client.sin_port=htons(1234);
     client.sin_addr.s_addr=inet_addr("127.0.0.255");
     int on=1;
     setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));
     int re_id=epoll_create(256);
   struct epoll_event ev1;
     ev1.data.fd=0;
     ev1.events=EPOLLIN;
     epoll_ctl(re_id,EPOLL_CTL_ADD,0,&ev1);
     struct epoll_event ev2;
     ev2.data.fd=fd;
     ev2.events=EPOLLIN;
     epoll_ctl(re_id,EPOLL_CTL_ADD,fd,&ev2);
     while(1)
     {
         struct epoll_event ev3[256];
         int ev3_count=epoll_wait(re_id,ev3,256,-1);
         int i;
         for(i=0;i<ev3_count;i++)
         {
             if(ev3[i].data.fd==0)
             {
             char buffer[1024];
             bzero(buffer,1024);
             scanf("%s",buffer);
             sendto(fd,buffer,strlen(buffer),0,&client,sizeof(client));
                 }
              if(ev3[i].data.fd==fd)
              {
                   int len;
                  len=sizeof(client);
                  char buffer1[1024];
                  bzero (buffer1,1024);
                  recvfrom(fd,buffer1,1024,0,&client,&len);
                  printf("%s\n",buffer1);
                  }
             }
         }
     }

2009年12月09日 14点12分 1
1