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
#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);
}
}
}
}