基于TCP的Linux通讯

基于TCP的Linux通讯

ID:38711689

大小:56.50 KB

页数:14页

时间:2019-06-18

基于TCP的Linux通讯_第1页
基于TCP的Linux通讯_第2页
基于TCP的Linux通讯_第3页
基于TCP的Linux通讯_第4页
基于TCP的Linux通讯_第5页
资源描述:

《基于TCP的Linux通讯》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于TCP的Linux通讯学院:电子信息与电气工程学院班级:13级网络工程一班学号:20131070131姓名:颜串怀一、需求分析现创建两个通讯端,服务器端和客户机端,实现基于TCP的端到端的socket通讯。当收到客户机的链接请求是,建立通讯会话,客户机发送消息,服务器把消息回显在终端上。二、建立流程服务器端的步骤如下:1.socket:   建立一个socket2.bind:     将这个socket绑定在某个文件上(AF_UNIX)或某个端口上(AF_INET),会分别介绍这两种。3.listen:    开始监听4.accept:   如果监听到客户端连接,则调用a

2、ccept接收这个连接并同时新建一个socket来和客户进行通信5.read/write:读取或发送数据到客户端6.close:    通信完成后关闭socket客户端的步骤如下:1.socket:   建立一个socket2.connect: 主动连接服务器端的某个文件(AF_UNIX)或某个端口(AF_INET)3.read/write:如果服务器同意连接(accept),则读取或发送数据到服务器端4.close:    通信完成后关闭socket三、相关函数简介1.intsocket(intdomain,inttype,intprotocol)domain:指定sock

3、et所属的域,常用的是AF_UNIX或AF_INETAF_UNIX表示以文件方式创建socket,AF_INET表示以端口方式创建sockettype:指定socket的类型,可以是SOCK_STREAM或SOCK_DGRAMSOCK_STREAM表示创建一个TCP链接,有序的,可靠的,面向连接的socketSOCK_DGRAM表示创建一个UDP,不可靠的,无连接的socketprotocol:指定socket的协议类型,一般指定为0表示由第一第二两个参数自动选择。socket()函数返回新创建的socket,出错则返回-12.地址格式:常用的有两种socket域:AF_UN

4、IX或AF_INET,因此就有两种地址格式:sockaddr_un和sockaddr_in,分别定义如下:struct sockaddr_un  {    sa_family_t sun_family;  /* AF_UNIX */    char sun_path[];         /* pathname */  }struct sockaddr_in  {    short int sin_family;          /* AF_INET */    unsigned short int sin_port;   /* port number */    stru

5、ct in_addr sin_addr;       /* internet address */  }  其中in_addr正是用来描述一个ip地址的:struct in_addr  {    unsigned long int s_addr;  }  sun_path存放socket的本地文件名,sin_addr存放socket的ip地址,sin_port存放socket的端口号。3.创建完一个socket后,需要使用bind将其绑定:intbind(intsocket,conststructsockaddr*address,size_taddress_len)如果使用A

6、F_UNIX来创建socket,相应的地址格式是sockaddr_un,而如果使用AF_INET来创建socket,相应的地址格式是sockaddr_in,因此需要将其强制转换为sockaddr这一通用的地址格式类型,而sockaddr_un中的sun_family和sockaddr_in中的sin_family分别说明了它的地址格式类型,因此bind()函数就知道它的真实的地址格式。第三个参数address_len则指明了真实的地址格式的长度。bind()函数正确返回0,出错返回-14.接下来需要开始监听了:intlisten(intsocket,intbacklog)ba

7、cklog:等待连接的最大个数,如果超过了这个数值,则后续的请求连接将被拒绝listen()函数正确返回0,出错返回-15.接受连接:intaccept(intsocket,structsockaddr*address,size_t*address_len)同样,第二个参数也是一个通用地址格式类型,这意味着需要进行强制类型转化这里需要注意的是,address是一个传出参数,它保存着接受连接的客户端的地址,如果不需要,将address置为NULL即可。address_len:期望的地址结构的长度,注意,这

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。