ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:62.85KB ,
资源ID:4718566      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4718566.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(《网络编程技术》试题-2.docx)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

《网络编程技术》试题-2.docx

1、成都信息工程学院考试试卷 学年第学期 课程名称: 网络编程技术 使用班级:网络工程学院级 试卷形式:开卷口闭卷曰填空题(每空2分,共22分) 试 题 * 四 五 六 七 八 九 十 总 分 得 分 1.在基于TCP的通信中,主动关闭连接的一方会在TIME.WAIT状态下等待 长度的时间。因此,主动关闭一方的程序无法马上重新启动并再次绑定相同的IP地址与端口。这时可以使用函数 端口。这时可以使用函数 并在参数中指字套接字选项 2.名字到IP地址的解析使用的函数是 2.名字到IP地址

2、的解析使用的函数是 ,IP地址到域名的解析 使用的函数是 3. 为保证“大端”和“小端”字节序的机器之间能相互通信,需在发送多字节整数时, 将主机字节序转换成 4. socket()函数可以创立三类套接字,分别是TCP套接字, 5. bind。、connect()等函数在出错的时候均会返回-1,具体出错的原因的错误代码可以在 全局变量中找到,调用 可以将错误代码转换为它对应的字符串信息。 6. 在TCP连接中,假设需要关闭某个方向的连接,可以使用函数7. gethostname(char *name, size_t namelen)函数的功能是8. psel

3、ect (int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset, const structtimeval *timeout, const sigset_t *sigmask)函数的 maxfd 参数的值 ,timeout参数定义的超时时间精确到,sigmask sleep(l);printf(nchild running.\nn); printf(nchild dead.\nn); exit(O); } else if ( pid > 0) {printf(nparen

4、t running AnH); waitpid(pid, NULL,。); printf(Hparent exit\nn); } else (printf(nfork error.'/); exit(O); } (1) fork()函数的功能: (2) waitpid(pid, NULL, 0)函数的功能: (3) 该程序运行成功后,其结果为: 5. 阅读以下程序,根据注释补全代码,并写出运行结果。 #include #include pthread_key_t key;void echomsg(int t) printf(ndest

5、ructor excuted in thread %d9param=%d\nn,pthread_self(),t);void * childfun(void *arg) int tid=pthread_self();printf(nthread %d enter\nH,tid); printf(nthe key,s%d\n,\pthread_getspecific(key));pthread_setspecific(key,(void *)tid); sleep(2);printf(nthread %d key's %d\nn,tid,pthread_getspecific(key));

6、 sleep(5);int main(void) pthread_t child_tid;printf(nthe main tid is %d\n”,pthread_self()); pthread_key_create(&key,(void *)echomsg);〃创立子线程,线程执行 函数为childfun、线程id保存到child_tid变量,pthreadJoin(child_tid,NULL); pthread_key_delete(key);printf(nmain thread exit\nn); return 0;} 假如程序运行后,主线程id为123456,子线

7、程id为234567,请写出程序的运行结果如下: 6. 以下程序实现了简单得标准输入的I/O复用,请补全代码。 #include #include #include #include int main(void) (fd_set rfds; struct timeval tv;int retval; char temp[100];(1) (2)7. 7. tv.tv_sec = 5; tv.tv_usec = 0; if(. else (4)) fgets(temp, 1

8、00,stdin); printf(nData is available now.\nn); printf(nNo data arrive.\nn); exit(0); 阅读以下程序,根据注释补全代码,并写出运行结果。 #include #include #include void *thread_function(void *arg) inti;for (i=0; i<2; i++) printf(nThread says hi!\nn); sleep(l);} return NULL;} int main

9、void) )〃创立子线程,线程id保存在childthread中, 〃线程函数为 thread_function pthread_t childthread; printf(Hmain thread enter.\nn); if(printf(Herror creating thread."); exit(l); } if ()//等待子线程childthread结束,获得和释放子线〃程的状态信息。 {printf(nerror joining thread.n); exit(l);} printf(Hmain thread exit.'rT);exit(O); 假如程

10、序正常运行,请写出结果: 8. 给出下面函数的作用: int flags;(1 )flags=fcntl(fileno(stdin), F_GETFL,0); (2)flags |= O.NONBLOCK;(3)fcntl(fileno(stdin), F_SETFL, flags) 9. 以下是UDP服务器端局部代码,阅读程序,根据注释完成空缺局部代码。 Int sockfd;struct sockaddr_in server, client; int sin_size, num;char msg[MAXDATASIZE]; 〃省略局部的代码完成的功能是:套接字创立和绑定。

11、while(l) ( 〃接收客户端数据,保存在msg缓冲区中 (1) 〃打印客户端的端口号} (1)(2) 10. 以下是TCP服务器端局部代码,阅读程序,根据注释完成空缺局部代码。 struct sockaddr_in servaddr, cliaddr; socklen_tlen; int sockfdl, sockfd2; 〃省略局部的代码完成的功能是:套接字创立、绑定和监听。 (1)〃获得客户端连接请求 if (connfd == -1)( /*出错处理*/ }(2)〃打印已连接客户端IP 地址 (1) (2)阅读程序,根据注释完成空缺局部代码。 #inc

12、lude #include int main(void)(int sockfd ; . 〃省略局部为创立套接字代码,创立的套接字保存在sockfd变量中。 int opt = 1; 〃重用本地地址 (1) _〃获得套接字接收缓冲〃 区大小,保存到。pt变量中 〃打印输出缓冲区大小 fflush(stdout);close(listenfd);} (1) (2) (3)原始套接字,阅读程序,根据注释完成空缺局部代码。 . ......〃省略局部的代码为程序需要的有关头文件 int main(int argc,char **argv

13、){ int sockfd;int on; on=l;一(1)〃构造ipv4, UDP的原始套接字, 保〃存在sockfd变量中。 _ (2)〃设置套接字[P_HDRTNCL选项,由 〃用户填写网络层协议头部,close(sockfd); return 0;} (1) (2)本程序为UDP客户端程序,地址相关信息从命令行输入,根据提示回答相关的问题。 .......〃省略局部的代码为程序需要的有关头文件#define PORT1234 int main(int argc, char *argv[])int fd, numbytes; char buf[MAXDATASIZ

14、E];struct hostent *he; struct sockaddr_in server, reply;if (argc != 3) {printf(nUsage: %s \n!\ argvfO]); exit(l);} if ((he = gethostbyname(argv [ 1 ])) == NULL) (perror(Hgethostbyname error\nn); exit(l);} . .....〃本局部省略了创立UDP套接字的代码,创立的套接字保存在fd变量中 bzero(&server, sizeof(serv

15、er));server.sin_family =; server. sin_port =iserver.sin_addr 二; // 一条程序语句,完成客户端向服务器发送数据。 close(fd);return 0; } (1)完成程序空缺局部的内容(2)简述gethostbyname函数的功能,并指出其参数为点分十进制字符串时,其如何操 作。 !14. !・..・・・.〃省略局部的代码为程序需要的有关头文件I i int main(void)I i{I ;pid_t result;;if(result == -1) ii -{i • perror("fork”);i

16、 i; exit; ! } ! else if(result == 0) { sleep(3); printf(“child\n”); exit(O); ) else 图 ( ;wait(result);i iiprintf("parent\n”); :exit;i i:) ii :}!(1)假如程序不出错执行,请写出程序的执行结果 (2)简述基于TCP的多进程并发服务器服,服务器程序的编程流程;参数的作用是o pselect函数返回值有三种情况,返回值为0 表示,返回值大于0表示,而返回值为-1时表示出错。 9. 设置SO_KE

17、EPALIVE选项作用是。 10. pthread_key_create(pthread_key_t *key, void (* destructor)(void * value))函数的作用是,其中 destructor 是, value 是, value 的默认值是°基于TCP协议的服务器端程序中,需要两个描述符,它们分别是由函数 创立的负责的描述符,和由函数创立的负责的描述符。 11. 基于TCP协议的套接字服务器程序中,会产生两个描述,其中之一是由函数创立的描述符,其主要功能是:其中之二是由 函数创立的描述符,其主要功能是: 12. 函数bind返回的一个常见错误是:所绑定

18、的地址已被其它进程使用,为解决这个问题,我们可以通过调用 函数,并为该函数的Optname (需设置 的选项)形参传递参数防止产生这个错误。 13. 基TCP套接字程序中,服务器可以通过函数返回与之通信的当前客户端的套接字地址结构。 14. pthread_detach(pthread_t tid)的作用是将一个线程变成线程。 15. 基于TCP协议的套接字服务器程序中,会产生两个描述,其中之一是由函数创立的描述符,其主要功能是:其中之二 是由函数创立的描述符,其主要功能是: 16. 在Liunx操作系统中支持五种I/O模型,分别是、、、阻塞I/O模型和非阻塞I/O模型。 17.

19、 函数在进程内局部配一个标志TSD的关键字,并且该函数其中一个形参是可选的析构函数,当系统调用该析构函数时,传递的参数是 15.阅读程序,假如程序运行时,主线程的线程id号是12345678,子线程child_tidl的 线程id号为987654321;子线程child_tid2的线程id号为87654321,完成下面的问题。 #include #include pthread_key_t key;pthread_once_t once = PTHREAD_ONCE_INIT; static void printfun(void){ printf

20、C'enter printf function ;\rT);} void echomsg(int t){ printfC'destructor excuted in thread%d,param=%d\n,\pthread_self(),t);} void *childfunl(void *arg)( pthread _once(&once,printfun);} void *childfun2(void *arg){ pthread _once(&once,printfun); int tid = pthread_self(); printfC'thread %denter\

21、n,\tid); printf(uthe key ,s%d\n,\pthread_getspecific(key)); pthread_setspecific(key,(void *)tid); sleep(2);printf(uthread2%d key's %d\n,\tid,pthread_getspecific(key)); sleep(5);i i! I ii ! Int main(void)i i! { i! pthread_t child_tid 1 ,child_tid2; ; printfC'the main tid is %d\n",pthread_se

22、lf());:①;〃仓U建TSD关键字,key指向创立的关键字,//echomsg为 i 析构函数。 I;pthread_create(&child_tid 1,NULL,childfun 1,NULL); •pthreadj oin(child_tid 1,NULL);果 «pthread_create(&child_tid2,NULL,childfun2,NULL); \sleep(lO);!pthreadJoin(child_tid2,NULL); 瞻pthread_key_delete(key); 义江 return 0;N K } 救& 霸 (1)根据程序上下文及注释

23、完本钱程序中①空缺处的代码。 *!(2)请写出程序的运行结果S ! II N : 隅 ;I II I:(3)解释 pthread_create(&child_tidl,NULL,childfun 1,NULL);完成的功能并解释个参数的 :含义;・..・・・.〃省略局部的代码为程序需要的有关头文件 int main(void)( char buf[20]; int num, flags; flags = fcntl(0,F_GETFL,0); ①〃加入非阻塞标志. if(fcntl(O,F_SETFL,flags)==-1) ( perror("fcntl”);

24、 exit(l); } while(l) (num = read(0,buf,20); if(errno == EWOULDBLOCK){ perror("read:");write( 1, “tryagain'n” ,strlen( "tryagain'n” )); }write(l,buf,num); ) return 0;} (1) 解释程序中flags二fcntl(0,F_GETFL,0);语句完成的功能; (2) 根据程序上下文,完成程序中①空缺处的代码。 (3)解释程序中fcntl(O,F_SETFL,flags)语句完成的功能。 (3) 请判别该I/O模

25、型是同步I/O模型还是异步I/O模型。 17.解释下面各个语句完成的功能;signal(SIGIO,ioaction); (1) fcntl(sockfd,F_SETOWN,getpid());ioctl(sockfd,FIOASYNC,&on); 〃 on 为整形,且 on=l 18. 谈话程序。双方都可以从终端输入一串字符(以回车结束),通过UDP的 方式发送到对方,并显示在对方的终端上。从命令行输入目的地址、目的 端口、源地址、源端口。使用I/O复用,进程阻塞到select,当标准输入 和socket有数据时返回。根据以下程序例如完成程序填空。 fd_set infds;For

26、) { /*重置句柄集*/ /*把标准输入置入句柄集*/ /*把 socket 置入句柄集*/ maxfd=max(fileno(stdin), sockfd)+1;if (select (maxfd, &infds, NULL, NULL, NULL)=T) { /*错误处理*/}if (FD_ISSET (sockfd, &infds)) /*测试 socket 是否可读*/ (/* 读 socket */}if (FD_ISSET(fileno (stdin), &infds)) /*测试标准输入是否可读*/ ( /*读标准输入*/) }非阻塞I/O的实现,可以通过

27、fcntl()来改变句柄(或描述符)的标志来实现。 将句柄(描述符)sockfd设置为非阻塞的代码是。 int flags: /*读取句柄当前标志*/ /*加入非阻塞标志*/ /*设置带有非阻塞标志的新标志*/gethostname函数,该函数返回当前主机的名字,根据下面的程序进行填 空。 #include int main() (char buf [ 100]; size* namelen;namelen=sizeof(buf); /* 调用 gethostname 函数*/printf(nhostname is %s\nn,);/* 输出主机的名字

28、/ } 19. 信号驱动I/O的实现,要通过信号驱动方式对多个句柄进行复用,要通过 如下几个步骤:将这些句柄(描述符)的属主都设为一个进程。将这些句柄 (描述符)的标志位O_ASYNC翻开,让句柄(描述符)发生I/O事件时发 送SIGIO信号。在属主进程中设置对SIGIO信号的处理。当有I/O事件在任 何一个句柄(描述符)上发生时,系统都会向进程发送SIGIO信号。进程在 对SIGIO的中断处理中再查询各个句柄(描述符)状态,进行相应的处理。 根据以上描述完成下面的程序填空。 void ioaction(int signo) /*定义信号处理程序*/{•••.} int main(

29、 stdinfd二句 eno(stdin); /*指定信号处理程序*/ /*句柄(描述符)所有者为当前进程*/ int on=l; ioctl(sockfd,FIOASYNC,&on); /*sockfd 发生 I/O 事件时发送 SIGIO 信号*/n=read(stdinfd,msg,BUFLEN);/* 可能阻塞 */ ) 20. int main(void) {pid_t pid; int status;if ((pid = fork()) == 0)( sleep(2); printf(nchild running.\nn); printf("child sl

30、eepingAn"); sleep(5); printf("child DeadAn"); exit(O);}else if ( pid > 0) ( printf(nparent running ・\n"); printf(nparent exit\nn); exit(O);} else ( printf("fork error.\n"); exit(l);} }运行结果如下: 23. #include #include int main(void)( pid_t pid;int status; if ((pid 二 vfo

31、rk())二二 0)( sleep(2); printf("child runningAn"); printf("child sleepingAn"); sleep(5); printf("child deadAn"); exit(O);}else if ( pid > 0) (printf("parent running An"); printf(" parent exit\n"); exit(O);} else ( printf("fork error.\n"); exit(O);} }运行结果如下: 24. #include #include

32、dio.h> pthread_once_t once=PTHREAD_ONCE_INIT; void once_run(void){ printf(nonce_run in thread %d\nn,pthread_self());} void * child 1 (void *arg)( int tid=pthread_self(); printf(nthread %d enter\nn,tid); pthread_once(&once,once_run); printf(nthread %d retums\nn,tid);} void * child2(void *arg)(

33、int tid=pthread_self(); printf(nthread %d enter\nn,tid); pthread_once(&once,once_run); printf(nthread %d returns'll",tid);} int main(void)( int tidl,tid2;printf("hello\n"); pthread_create(&tidl,NULL,childl,NULL); pthread_create(&tid2,NULL,child2,NULL); sleep(lO);printf(nmain thread exit\nn); retu

34、rn 0; )运行结果如下,线程的ID随便用一个整数来代替。 25. #include #include #include #include int my global; pthread_mutex_t mymutex=PTHREAD_MUTEX_INITIALIZER; void *thread_function(void *arg){ int i,j;for (i=0; i<6; i++) (pthread_mutex_lock(&my mutex); j=my global;j=j+l;

35、 printfC'.”); fflush(stdout); sleep(l); myglobal=j; pthread_mutex_unlock(&mymutex);) return NULL;} int main(void)( pthread_t mythread;int i; if ( pthread_create( &mythread, NULL, thread_function, NULL)) (printf(nerror creating thread/1); 19.以INADDR_ANY调用bind的服务器,在接收到连接后,调用数获取系统选择的IP地址。 20.

36、如果用户程序为发送网络数据报构造自己的IPv4头部,需创立接字,并且前提条件是:调用 接字,并且前提条件是:调用 函数,给套接字设置 二、判断题(正确错误X)(每题1分,共14分) 的2. K & 3. 图4- 1 :5. 的2. K & 3. 图4- 1 :5. 运行。() 在TCP网络程序中,connect()函数用于客户端向服务器发起连接。而在UDP网络程 序中,由于UDP是面向无连接的,所以connect()函数不能用于UDP客户端。() inet_ntoa()函数可以将32位的网络字节序

37、二进制IPv4地址转换成相应的字符串形式 的IP地址,但不能将二进制IPv6地址转换成相应的字符串形式的IP地址。() 服务器程序通常都会调用bind。函数以绑定监听地址,而客户端那么很少调用它。() 当一个客户SYN到达时,假设未完成连接队列和巳完成连接队列都是满的,TCP就忽 略此分节,且不发送RSTo () 6. 调用close()函数将立即关闭发送与接收这两个方向的TCP连接而不管将关闭的套接 字的引用情况。() 7. 在TCP客户服务器通信中,假设服务器端崩溃,那么可以通过重启服务器让正在进行的 通信继续。() 8. TCP迭代服务器在某一时刻最多只能存在一个

38、客户端与之建立的通信连接,而并发 服务器在某一时刻可以存在多个客户端与之建立的通信连接。 9. 互斥锁是一种专用于进程间数据同步的技术。 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 答案 在用pthread库编写的多线程程序中,假设主线程退出,那么主线程创立的新线程将继续1. 10.当子进程正常或异常终止时,系统内核会向其父进程发送SIGCHLD信号。() abort();for (i=0; i<6; i++) { pthread_mutex_lock

39、mymutex); myglobal=myglobal+1; pthread_mutex_unlock(&my mutex); printf("F"); fflush(stdout); sleep(l);} if ( pthreadjoin ( mythread, NULL)){ printf(nerror joining thread/); abort();} printf(n\nmyglobal equals %d\nn,myglobal); exit(O); } 运行结果如下: 26. main(int argc, const char **argv) (ulon

40、g_t addr; struct hostent *hp;char **p; if (argc != 2) (printf(nusage: %s IP-address\nn, argv[0]); exit (1); }if (((addr = inet_addr(argv[l ])) == -1) ( printf(nIP-address must be of the form a.b.c.d\n"); exit (1);} hp = gethostbyaddr((char *)&addr, sizeof (addr), AF_INET); if (hp = NULL) (;print

41、f(nhost information for %s not found'n", argv[l]); :exit (1);; } :for (p = hp->h_addr_list; *p != 0; p++) (!struct in addr in; I 7;char **q; ;memcpy(&in.s_addr, *p, sizeof (in.s_addr));:printf(n%s\t%s,\ inet_ntoa(in), hp->h_name); :for (q = hp->h_aliases; *q != 0; q++):printf(" %s", *q);} 驴 j

42、i exit(0);泌:} : 执行命令后运行结果如下: 救R 图I IS i四、问答题(每题7分,共28分) ! i.请说明给新线程传递参数的方法有哪些?这些方法的优缺点是什么? I请分别说明以下线程专用数据(TSD, thread specific data)相关的函 数的作用是什么? int pthread_key_create(pthread_key_t *key, void (* destructor) (void *value));int pthreadsetspecific(pthread_key_t key, const void *value); void *

43、pthread_getspecific(pthread key_t key); int pthread_key_delete(pthread_key_t key);请比拟信号驱动I/O模式与非阻塞I/O模式,并说明如何在程序中将套接 口设置为非阻塞I/O模式。 2. 请写出使用select ()函数实现I/O多路复用的步骤。 3. 请简述基于TCP和UDP协议的网络通信程序调用bind ()和connect () 函数的作用分别是什么? 4. 请简述网络编程中设计并发服务器,使用多进程与多线程请问有什么区 另U? 5. 如何创立一个线程?请写一段程序说明(要求对相关函数和参数做出说

44、明)。 6. 请简述在Linux系统中阻塞I/O和非阻塞I/O两种模型的异同点。 7. 请简述用TCP套接字建立服务器和客户端的基本步骤,并写出每步调用的 函数。 8. UDP套接字程序中调用connect ()函数和不调用该函数的区别是什么? 9. 请创立一个访问ICMP的原始套接字,并简述原始套件字可以提供的TCP/UDP套接字一般不提供的功能(至少3种); 10. 请简述用TCP套接字建立多进程并发服务器的基本步骤,并写出每步调用 的函数。 11. 请给出设置套接字SCLRCVBUF选项的作用,并说明该选项是针对哪一层协 议进行设置,并具体说明在服务器和客户端设置该选项时,至

45、少在调用什 么函数之前进行设置及理由。 12. 非阻塞I/O是Linux下可用的I/O模型之一,请以recvfrom函数为例说 明该模型下系统I/O的工作模式。 13. 请简述accept ()函数调用成功后,返回的值。 14. 请创立一个访问ICMP的原始套接字,并简述原始套件字可以提供的TCP/UDP套接字一般不提供的功能(至少3种); 15. 请简述用TCP套接字建立多线程并发服务器的基本步骤,并写出每步调用 的函数。 16. 简述select ()和pselect ()函数的区别。 17. 基于TCP协议的套接字服务器程序中,会产生两种套接字描述符,简述这 两种套接字描述符

46、分别是什么?分别由什么函数创立?以及这两种描述符 各自的作用。 18. 设置套接字选项时,请指出SO_RCVBUF选项所在的层(网络协议中的那一 层)?并具体说明在服务器和客户端设置该选项时,必须在调用哪一网络 编程函数之前进行设置及理由。 19. 简述基于TCP的多线程并发服务器服,服务器程序的编程流程;简述5种10模型分别是哪五种10模型。 20. 请简述fork和vfork的区别和联系。 I 24.在多进程程序设计时,产生新的子进程后,父进程要关闭连接套接字,而 子进程要关闭监听套接字,具体原因是什么? 救& 图 25.请简述套接字SO_REUSEADDR选项的作用I 黑!

47、 S ! II 五、程序题(18分)计一个基于TCP的服务器端程序,端口号为8596,使用服务器的任务一个IP地址。只 为IP地址为的客户端提供服务,其它IP地址的客户端连接以后就直接断开。程序代码的头文件局部可以省略。 服务器的功能是:(1)循环接收指定IP地址的客户端的连接,连接成功后打印客户端的 端口号。(2)接收客户端的数据,并打印出来。(3)将收到的客户端数据前面加上"message received: 然后发回给客户端。 六、程序题(16分) 请编写一个基于TCP协议的客户端程序,该程序完成的功能包括: 接收用户从终端输入的字符串,然后发送给服务器。 接收服务器端发

48、回的字符串,并打印出来。 服务器的端口是1234,服务器的IP地址需用户运行客户端程序时手动输入。 1、 2、 3、 客户端程序: #include #include #include #include #include #include #include #define PORT 1234 int main(int argc, char *argv[]) (int fd; struct ho

49、stent *he;struct sockaddr_in server; 〃从这里开始补全程序七、程序题(20分) 请编写一个基于TCP协议的客户端程序,服务器的端口是1234,服务器的IP地址 需用户运行客户端程序时手动输入,该程序完成的功能包括: 1、 输出系统选择的I P地址和端口号。 接收服务器端发回的字符串,并打印出来。 八、程序题(22分) 请编写一个基于TCP协议的服务器端程序,服务器的端口是1234,服务器的IP地 址选择通配地址,该程序完成的功能包括: 4、输出系统选择的IP地址。 5、接收客户端发回的字符串,并打印出来。 九、编程题(共20分) 编写基于T

50、CP的客户端程序,要求如下: (1) (2) (3) (4) (5) (6) (7) 客户端可以从终端输入一串字符,以回车结束,然后将输入的字符串发送到 服务器; 客户端可以接收服务器发过来的数据,并在终端上显示; 客户端输入quit时,客户端程序退出; 客户端程序基于select函数实现的IO复用。 服务器的IP地址为:;端口号为:1234; 客户端地址族为IPV4; 局部代码已给出,请继续完成后面的代码。 . .〃省略局部的代码为程序需要的有关头文件 #define MAXDATASIZE 100 int main() int sockfd,num,m

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服