《网络编程技术》实验指导书(5)

2019-03-27 16:16

exit(-1);

}

if(listen(listenfd,BACKLOG)==-1) {

perror(\ exit(-1);

}

sin_size=sizeof(struct sockaddr_in); while(1){

if((connectfd=accept(listenfd,(struct sockaddr *) &client,&sin_size))==-1){

perror(\ exit(-1); }

if((pid=fork())>0){ close(connectfd) ; continue; }

else if(pid==0){ close(listenfd);

process_client(connectfd,client); exit(1); } else {

perror(\ error.\\n\

exit(0);

} }

close(listenfd); }

void process_client(int connectfd,struct sockaddr_in client){

21

char recvbuf[MAXCHARSIZE]; char sendbuf[MAXCHARSIZE]; char client_name[MAXCHARSIZE]; int recvlen,i;

printf(\ send(connectfd,\ recvlen=recv(connectfd,client_name,MAXCHARSIZE,0); if(recvlen==0){ close(connectfd);

printf(\ return; }

else if(recvlen<0){

close(connectfd);

printf(\ return; }

client_name[recvlen]='\\0';

printf(\

while(recvlen=recv(connectfd,recvbuf,MAXCHARSIZE,0)){ recvbuf[recvlen]='\\0';

printf(\ message:%s\\n\ for(i=0;i

sendbuf[i] = recvbuf[recvlen - i -1] ; sendbuf[recvlen]='\\0';

send(connectfd,sendbuf,strlen(sendbuf),0);

} /*while*/

printf(\ close(connectfd); }

22

23

实验四 多线程服务器设计

1. 实验目的

1.掌握多线程服务器知识

2.掌握有关多线程程序的编写方法; 2. 实验要求

1.认真阅读和掌握本实验的相关的知识点。 2.上机编写并运行本程序。

3.保存和打印出程序的运行结果,并结合程序进行分析。 3. 实验内容

1、服务器等待客户连接,连接成功后向客户发送欢迎信息,接着接收该客户的名字并显示,然后接收来自客户的信息(字符串),将该字符串反转,并将结果送回客户。要求服务器具有同时处理多个客户的能力。

2、客户首先与服务器连接,接着接收用户输入客户的名字,将该名字发送给服务器,然后接收用户输入的字符串,并发送给服务器,然后接收服务器返回的经处理后的字符串,并显示之。当用户输入Ctrl+D,终止连接并退出。 4. 实验内容程序 (1)客户端程序如下: #include #include #include #include #define PORT 1234

#define MAXDATASIZE 100 int main(int argc,char * argv[]) {

int fd,numbytes;

char buf[MAXDATASIZE]; struct hostent * he; struct sockaddr_in server;

24

int i=1; if(argc!=2) {

printf(\ \\n\ exit(-1); }

if((he=gethostbyname(argv[1]))==NULL){ perror(\

exit(-1);

}

if((fd=socket(AF_INET,SOCK_STREAM,0))==-1){ perror(\

exit(1);

}

bzero(&server,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(PORT);

server.sin_addr=*((struct in_addr *)he->h_addr);

if(connect(fd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1) { perror(\

exit(1);

}

if((numbytes=recv(fd,buf,MAXDATASIZE,0))==-1) { perror(\

exit(1);

}

buf[numbytes]='\\0';

printf(\

25


《网络编程技术》实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:【温州2019届高三适应性测试】2018年8月温州市普通高中选考适应

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: