- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验6.LinuxSocket编程实验
1、实验目的:
(1)了解TCP/IP协议;
(2)掌握socket编程。
2、实验设备:
(1)PC机的VMware虚拟机运行UbuntuLinux系统;
(2)两机对连的网络线;
(3)带网口的测试计算机;
(4)WINDOWS“SOCKETTOOL”调试工具。
3、实验内容:
实现典型客户机/服务器程序中的服务器及客户机。
4、实验原理
4.1客户机/服务器工作流程
使用TCP协议的客户机/服务器进程的工作过程如下图
4.2Socket编程相关函数
常用的socket函数有:socket,bind,listen,accept,connect,send,recv。
1)socket(建立连接)
表头文件:
#includesys/types.h
#includesys/socket.h
定义函数:intsocket(intfamily,inttype,intprotocol);
函数说明:socket()函数用来生成一个套接口描述字,也称为套接字,指
定协议簇和套接口。
参数:family指定协议族,type指明字节流方式,而protocol一般为0
Family的取值范围:
AF_LOCALUNIX协议族
AF_ROUTE路由套接口
AF_INETIPv4协议
AF_INET6IPv6协议
AF_KEY密钥套接口
参数type的取值范围:
SOCK_STREAMTCP套接口
SOCK_DGRAMUDP套接口
SOCK_PACKET支持数据链路访问
SOCK_RAM原始套接口
返回值:成功返回非负描述字,失败返回负值
2)bind(对socket定位)
表头文件:
#includesys/types.h
#includesys/socket.h
定义函数:
Intbind(intsockfd,structsockaddr*my_addr,intaddrlen);
函数说明bind()用来设置给参数sockfd的socket一个名称。此名称由参数
my_addr指向一
sockaddr结构,对于不同的socketdomain定义了一个通用的数据结构
structsockaddr
{
unsignedshortintsa_family;
charsa_data[14];
};
sa_family为调用socket()时的domain参数,即AF_xxxx值。
sa_data最多使用14个字符长度。
此sockaddr结构会因使用不同的socketdomain而有不同结构定义,
例如使用
AF_INET
domain,其socketaddr结构定义便为
structsocketaddr_in
{
unsignedshortintsin_family;
uint16_tsin_port;
structin_addrsin_addr;
unsignedcharsin_zero[8];
};
structin_addr
{
uint32_ts_addr;
};
sin_family即为sa_family
sin_port为使用的port编号
sin_addr.s_addr为IP地址
sin_zero未使用。
参数socket为套接字,my_addr是一个指向特定协议地址结构的指针,
addrlen为sockaddr
的结构长度。
返回值成功则返回0,失败返回-1,错误原因存于errno中。
错误代码
EBADF参数sockfd非合法socket处理代码。
EACCESS权限不足
ENOTSOCK参数sockfd为一文件描述词,非socket。
3)listen(等待连接)
表头文件:
#includesys/socket.h
定义函数:
Intlisten(ints,intbacklog);
函数说明:
listen()用来等待参数s的socket连线。
参数backlog指定同时能处理的最大
连接要求,如果连接数目达此上限则client端将收到ECONNREFUSED的错误。
Listen()并未开始接收连线,只是设置socket为listen模式,真正接收client
端连线的是accept()
您可能关注的文档
- 医疗质控检查记录范文.pdf
- 中山大学本科生选课指南.pdf
- 《智能机器人装配与编程》课程标准.pdf
- 国际项目管理专业资质认证 IPMP D级试题答案(03年11月).pdf
- 刻章业安全管理制度.pdf
- 2022~2023煤矿安全人员考试题库及答案参考28.pdf
- 关于师德征文(精选21篇).pdf
- 2024年信息化建设工作总结范文.pdf
- 初中体育面试试讲稿【三篇】.pdf
- 南召县三小四年级数学上册第二单元两三位数除以两位数第6课时两三位数除以两位数的笔算__调商教案苏教版.pdf
- GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 中国国家标准 GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 《GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs)》.pdf
- GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- 中国国家标准 GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 中国国家标准 GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 《GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样》.pdf
- 《GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯》.pdf
- 中国国家标准 GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯.pdf
文档评论(0)