欢迎来到天天文库
浏览记录
ID:45558395
大小:238.58 KB
页数:62页
时间:2019-11-14
《【精品】通信应用软件设计实验指导书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《通信应用软件设计》实验指导书耿鹏编南京工程学院通信工程学院二O—O年九月实验一TCP服务器端程序设计1实验二TCP客户端程序设计8实验三UDP服务器端程序设计11实验四UDP客户端程序设计17实验五名字与IP地址转换编程21实验六多进程并发服务器编程26实验七多线程并发服务器编程38实验八I/O多路复川服务器编程47实验九广播编程56附录A62说明:实验六、实验七、实验八均为4学吋,其余为2学时实验一TCP服务器端程序设计一、实验目的学习和掌握Linux下的TCP服务器基木原理和基木编程方法。二.实验平台ubuntu-8.04操作系统三、实验内容编写Linux
2、下TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串。四.实验原理使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,其主要实现过程如图1.1所示。服务器端socketQbind()客户端listen()accept()阻塞直到接收到客户连接请求建立连接TCP三次握手socket。connectQ图1.1TCP客户/服务器的套接字函数1、socket函数:为了执行网络输入输出,一个进程必须做的第一件事就是调用socket函数获得一个文件描述符。#in
3、eludeintsocket(intfamily,inttype,intprotocol);返回:非负描述字成功-1失败第一个参数指明了协议簇,日前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协议);第二个参数指明套接口类型,有三种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口);如果套接口类型不是原始套接口,那么第三个参数就为Oo2、connect函数:当用socket建立了套接口后,可以调用connect为这个套接字指明远
4、程端的地址;如果是字节流套接口,connect就使用三次握手建立一个连接;如果是数据报套接口,connect仅指明远程端地址,而不向它发送任何数据。#ineludeintconnect(intsockfd,conststructsockaddr*addr,socklen_taddrlen);返回:0成功-1失败第一个参数是socket函数返回的套接口描述字;第二和第三个参数分别是一个指向套接口地址结构的指针和该结构的大小。这些地址结构的名字均已“sockaddr_”开头,并以对应侮个协议族的唯一后缀结束。以IPv4套接口地址结构为例,
5、它以“sockaddrjn”命名,定义在头文件;以卜•是结构体的内容:structinaddr{inaddrtsaddr;/*IPv4地址7};structsockaddrjn{uint8tsinlen;/*无符号的8位整数*/sa_family_tsin_family;/*奎接口矗址结构的地址簇,这里为AFJNET*/in_port_tsinjoort;/*TCP或UDP端口*/structin_addrsin_addr;charsin_zero[8];};3、bind函数:为套接口分配一个本地IP和协议端口,对于网际协议,协议地址
6、是32位IPv4地址或128位IPv6地址与16位的TCP或UDP端口号的组合;如指定端口为0,调用bind时内核将选择一个临时端口,如果指定一个通配IP地址,则要等到建立连接后内核才选择一个本地IP地址。#includeintbind(intsockfd,conststructsockaddr*server,socklen_taddrlen);返回:0成功-1失败第一个参数是socket函数返回的套接口描述字;第二和第第三个参数分别是一个指向特定于协议的地址结构的指针和该地址结构的长度。4、listen函数:listen函数仅被TC
7、P服务器调用,它的作用是将用sock创建的主动套接口转换成被动套接口,并等待来自客户端的连接请求。#includeintlisten(intsockfd,intbacklog);返回:0成功-1失败第一个参数是socket两数返回的套接口描述字;第二个参数规定了内核为此套接口排队的最大连接个数。出于listen函数第二个参数的原因,内核要维护两个队列:以完成连接队列和未完成连接队列。未完成队列中存放的是TCP连接的三路握手为完成的连接,accept函数是从以连接队列中取连接返冋给进程;当以连接队列为空时,进程将进入睡眠状态。5、acc
8、ept函数:accept
此文档下载收益归作者所有