实验五关于tcp套接字编程

上传人:shi****01 文档编号:40759017 上传时间:2021-11-17 格式:DOC 页数:4 大小:34.50KB
收藏 版权申诉 举报 下载
实验五关于tcp套接字编程_第1页
第1页 / 共4页
实验五关于tcp套接字编程_第2页
第2页 / 共4页
实验五关于tcp套接字编程_第3页
第3页 / 共4页
资源描述:

《实验五关于tcp套接字编程》由会员分享,可在线阅读,更多相关《实验五关于tcp套接字编程(4页珍藏版)》请在装配图网上搜索。

1、实验五关于tcp套接字编程 一、实验目的 1 熟悉基本 TCP 套接字编程流程(服务器端、客户端)2 掌握流程中的关键函数的用 法二、实验要求 1 将实例程序录入、编译、运行,写出运行结果 2 写出套接字定义相关的语句(服务器端、客户端分开写) 3 写出能体现 TCP 套接字编程流程的语句(服务器端、客户端分开写)4 写出除上 诉相关语句及头文件之外的语句注释三、实例程序服务器端 客户端 运行: 运行服务器端程序./服务器端程序名称 运行客户端程序 ./客户端程序名称+空格+127. 0. 0.1 服务器端 1 #include 2 #include 3 include 4 #include

2、5 #include 6 #include 7. #include 8. #include /18 行:所需要的头文件 9. define PORT 1234 /定义端口号为 1234; 10. #define BACKLOG 1 /最大允许连接的数量 BACKLOG 定义为 1 11mainO 12. 13. int listenfd,connectfd; 14. struct sockaddr_in server; 15. struct sockaddr_in client; 16 socklen_t addrlen; 17. if (仃 istenfd =socket (AF.INET,

3、 SOCK.STREAM, 0)= 一 1) 18. 19. perror (20. exit (1); 21. 1721 行:调用 socket ()函数,产生 TCP 套接字。如果出错,打印 错误信息。 22. int opt 二 SO_REUSEADDR; 23. setsockopt(listenfd, S0L_S0CKET, SO.REUSEADDR, &opt, sizeof(opt); /2223 行:设置套接字选项 SO.REUSEADDR,即地址重用选项。由于系统默认是只允 许一个套接字绑定在一个特定的协议地址上,并 II 当该套接字关闭后,系统仍不允许在该 地址上绑

4、定其它套接字。如果去掉这两行,程序运行时产生的错误信息为:BindO error;Address already in use 24. bzero(&server, sizeof (server); 25. server sin_family=AF_INET; 26. server sin_port=htons(PORT); 27. server sin_addr saddrhtonl(INADDR_ANY); /2427 行:初始化 server 套接字地址结构,并对地址结构中的成员赋值。当前的本 地地址设为 INADDR_ANY,接收目的地址是本机 IP 的客户端连接,这里的端口号

5、和 IP 地址 都要转换成网络字节序。 28. if (bind(listenfd, (struct sockaddr *)&server, sizeof (server)=1) 29. 30. perror (31 exit (1); 32. 2832 行:将套接字和指定的协议地址绑定.33. if(listen(list enfd, BACKLOG)=-1) 34. 35. perror (36 exit (1); 37. /3337 行:将套接字描述符转换成监听描述符,等待客户的连接.38. addrlen=sizeof(client); 39. if(connectfd 二&a

6、mp;ccept(listenfd, (struct sockaddr*)&client,&addrlen) =-l) 40. 41. perror (42. exit (1); 43. /3943 行:接受客户连接,客户的地址信息存放在 client 地址结构中. 44. printf( inet_ntoa (client sin_addr), htons (client sin_port); 显示客户的 IP 地址和端口号通过 inet_ntoa 0 函数将 IP 地址转换成可显示的 ASCII 字符串,通过 htons()函数将端口号转换成网络字节序。 45. send(

7、connectfd, 发送 Welcome 字符串给客户端 46. close (connectfd); 47. close(listenfd); 4647 行:关闭套接字。线关闭己连接套接字,再关闭 监听套接字 48. 客户端 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 rtinclude 8. include /广 8 行:所需的头文件 9. #define PORT 1234 /定义端口号为 1234; 10. #define MAXDATASIZE 100 /接收缓冲器大小为 100 11. i

8、nt main(int argc, char *argv) 12 13 int sockfd, num; 14. char bufEMAXDATASIZE; 15. struct hostent *he; 16 struct sockaddr_in server; 17. if (argc !=2) 18. 19. printf(20 exit(1); 21. /17 辽 1 行:检查用户的输入。如果用户输入不正确,提示用户正确的输入方 式 22. if(he=gethostbyname(argvEl)=NULL) 23. 24. printf(25 exit (1); 26. 2226 行:

9、通过用户输入的点分十进制形式的 IP 地址,获得服务器的相关地 址信息 27. if (sockfd 二 socket (AF_INET,SOCK_STREAM,O)=-1) 28. 29. printf(30 exit (1);31. /2731 行:调用 socket ()函数产生套接字描述符 32. bzero(&server, sizeof(server); 33 server sin_family=AF_INET; 34. server sin_port=htons(PORT); 35. server. sin_addr=*(struct in_addr *)heh_addr

10、) ; /32、35 行:初始化服务 器的地址结构,并为地址结构的成员赋值 36 if (connect (sockfd, (struct sockaddr *) &server, sizeof (server) )=1) 37. 38. printf (39 exit (1); 40. ) /3640 行:调用 connect 0 函数连接到服务器 server 41. if (num=recv(sockfd, buf, MAXDATASIZE, 0) )=T) 42 43. bufnum-1= 0, ; 44. exit(l); 45. 445 行:接收服务器发过來的字符串,保存在 buf 中。接收的真正字节数 被存储在 num 中。 46. buf num-1二0; 以0 标志字符串的结束 47. printf (显示从服务器接收到的 buf 信息 48. close (sockfd); /关闭套接字 49. 感谢您的阅读,祝您生活愉快。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!