Client:
#define _GNU_SOURCE 1
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFFER_SIZE 64
int main()
{
const char *ip="127.0.0.1";
int port=12345;
struct sockaddr_in server_address;
bzero(&server_address,sizeof(server_address));
server_address.sin_family=AF_INET;
inet_pton(AF_INET,ip,&server_address.sin_addr);
server_address.sin_port=htons(port);
int sockfd=socket(PF_INET,SOCK_STREAM,0);
assert(sockfd!=0);
if(connect(sockfd,(struct sockaddr *)&server_address,sizeof(server_address))<0)
{
printf("connection failedn");
close(sockfd);
return 1;
}
struct pollfd fds[2];
fds[0].fd=0;
fds[0].revents=0;
fds[1].fd=sockfd;
fds[1].events=POLLIN | POLLRDHUP;
fds[1].revents=0;
char read_buf[BUFFER_SIZE];
int pipefd[2];
int ret=pipe(pipefd);
assert(ret!=-1);
while(1)
{
ret=poll(fds,2,-1);
if(ret<0)
{
printf("poll failuren");
break;
}
if(fds[1].revents&POLLRDHUP)
{
printf("server close the connectionn");
break;
}
else if(fds[1].revents&POLLIN)
{
memset(read_buf,'