基于tcp的协议

上传人:F****n 文档编号:90838495 上传时间:2019-06-19 格式:DOCX 页数:16 大小:25.09KB
返回 下载 相关 举报
基于tcp的协议_第1页
第1页 / 共16页
基于tcp的协议_第2页
第2页 / 共16页
基于tcp的协议_第3页
第3页 / 共16页
基于tcp的协议_第4页
第4页 / 共16页
基于tcp的协议_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《基于tcp的协议》由会员分享,可在线阅读,更多相关《基于tcp的协议(16页珍藏版)》请在金锄头文库上搜索。

1、基于tcp的协议篇一:基于TCP协议的网络程序基于TCP协议的网络程序 下图是基于TCP协议的客户端/服务器程序的一般流程:图 TCP协议通讯流程建立链接的过程:图 建立连接的过程服务器调用socket 、bind 、listen 完成初始化后,调用accept 阻塞等待,处于监听端口的状态,客户端调用 socket 初始化后,调用connect 发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从 connect 返回,同时应答一个ACK段,服务器收到后从accept 返回。数据传输的过程:建立连接后,TCP 协议提供全双工的通信服务,但是一般的客户端/服务器程序

2、的流程是由客户端主动发起请求,服务器被动处理请求,一问一答的方式。因此,服务器从 accept 返回后立刻调用read ,读socket就像读管道一样,如果没有数据到达就阻塞等待,这时客户端调用write 发送请求给服务 器,服务器收到后从read 返回,对客户端的请求进行处理,在此期间客户端调用read 阻塞等待服务器的应答,服务器调用write 将处理结 果发回给客户端,再次调用read 阻塞等待下一条请求,客户端收到后从read 返回,发送下一条请求,如此循环下去。关闭链接的过程:图 关闭连接的过程如果客户端没有更多的请求了,就调用close 关闭连接,就像写端关闭的管道一样,服务器的r

3、ead 返回0,这样服务器就知道客户端关闭了 连接,也调用close 关闭连接。注意,任何一方调用close 后,连接的两个传输方向都关闭,不能再发送数据了。如果一方调用 shutdown 则连接处于半关闭状态,仍可接收对方发来的数据。在学习socket API时要注意应用程序和TCP协议层是如何交互的: *应用程序调用某个socket函数时TCP协议层完成什么动作,比如调用connect 会发出SYN段 *应用程序如何知道TCP协议层的状态变化,比如从某个阻塞的socket函数返回就表明TCP协议收到了某些段,再比如read 返回0就表明收到了FIN段先看一下需要用到的函数1 NAME2 s

4、ocket - create an endpoint for xxmunication 34 SYNOPSIS567 #include /* See NOTES */ #include891 int socket;0 DESCRIPTION1 socket creates an endpoint for xxmunication a1 nd returns a descriptor. socket 打开一个网络通讯端口,如果成功的话,就像open 一样返回一个文件描述符,应用程序可以像读写文件一样用 read/write在网络上收发数据,如果socket 调用出错则返回-1。对于IPv4,fa

5、mily参数指定为AF_INET。对于TCP协 议,type参数指定为SOCK_STREAM,表示面向流的传输协议。如果是UDP协议,则type参数指定为SOCK_DGRAM,表示面向数据报的 传输协议。protocol参数的介绍从略,指定为0即可。12 NAME bind - bind a name to a socket3456 SYNOPSIS #include /* See NOTES */ #include789 int bind;服务器程序所监听的网络地址和端口号通常是固定不变的,客户端程序得知服务器程序的地址和端口号后就可以向服务器发起连接,因此服务器需要调用bind绑定一个固定

6、的网络地址和端口号。bind 成功返回0,失败返回-1。bind 的作用是将参数sockfd和myaddr绑定在一起,使sockfd这个用于网络通讯的文件描述符监听myaddr所描述的地址和端口号。前面讲 过,struct sockaddr *是一个通用指针类型,myaddr参数实际上可以接受多种协议的sockaddr结构体,而它们的长度各不相同,所以需要第三个参数addrlen指定 结构体的长度。我们的程序中对myaddr参数是这样初始化的:1 bzero);= AF_INET;= htonl; 2 _family 3 _addr4 _port = htons;首先将整个结构体清零,然后设置

7、地址类型为AF_INET,网络地址为INADDR_ANY,这个宏表示本地的任意IP地址,因为服务器可能有多个网卡, 每个网卡也可能绑定多个IP地址,这样设置可以在所有的IP地址上监听,直到与某个客户端建立了连接时才确定下来到底用哪个IP地址,端口号为 SERV_PORT,我们定义为8000。12 NAME listen - listen for connections on a socket3456 SYNOPSIS #include /* See NOTES */ #include78 int listen;典型的服务器程序可以同时服务于多个客户端,当有客户端发起连接时,服务器调用的acce

8、pt 返回并接受这个连接,如果有大量的客户端发起连接而服务 器来不及处理,尚未accept的客户端就处于连接等待状态,listen 声明sockfd处于监听状态,并且最多允许有backlog个客户端处于 连接待状态,如果接收到更多的连接请求就忽略。listen 成功返回0,失败返回-1。12 SYNOPSIS #include /* See NO3 TES4 */ #include5int accept; 三方握手完成后,服务器调用accept 接受连接,如果服务器调用accept 时还没有客户端的连接请求,就阻塞等待直到有客户端连接上来。 cliaddr是一个传出参数,accept 返回时传

9、出客户端的地址和端口号。addrlen参数是一个传入传出参数(value-result argument),传入的是调用者提供的缓冲区cliaddr的长度以避免缓冲区溢出问题,传出的是客户端地址结构体的实际长度(有可能没有占满调用者 提供的缓冲区)。如果给cliaddr参数传NULL,表示不关心客户端的地址。服务器使这样子的:12345678 while cliaddr_len = sizeof; connfd = accept&cliaddr, &cliaddr_len); n = read; . close; 整个是一个while死循环,每次循环处理一个客户端连接。由于cliaddr_le

10、n是传入传出参数,每次调用accept 之前应该重新赋初值。 accept 的参数listenfd是先前的监听文件描述符,而accept 的返回值是另外一个文件描述符connfd,之后与客户端之间就通过 这个connfd通讯,最后关闭connfd断开连接,而不关闭listenfd,再次回到循环开头listenfd仍然用作accept的参数。 accept 成功返回一个文件描述符,出错返回-1。TCP网络程序:的作用是从客户端读字符,然后将每个字符转换为大写并回送给客户端。 /*/1 #include篇二:基于 TCP 协议的即时通信软件的设计与实现JISHOU UNIVERSITY专业课课程论

11、文题 目: 基于 TCP 协议的即时通信软件的设计作 者: 学号: 所属学院:专业年级: 总 评 分: 完成时间:与实现信息科学与工程学院吉首大学信息科学与工程学院基于 TCP 协议的即时通信软件的设计与实现(吉首大学信息科学与工程学院,湖南 吉首 416000)摘 要即时通信,由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET 套接字接口实现的。当前的主流UNIX 系统和微软的WINDOWS 系统都在内核提供了对SOCKET 字接口的支持。使用这个统一的接口,可以编

12、写一个可移植的TCP/IP 通信程序。使信息能够在INTERNET 上可靠的传输。本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S 模式,底层通信通过SOCKET 套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P 方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML 序列化的消息进行通信。关键词:即时通信;文件传输;套接字;TCP 协议The Design and Implementation of Simple Instant Message Soft

13、ware Based on TCP Protocol AbstractYi Zhen kaiAbstractInstant messages have several advantages such as real-time, cross-platform, cheapand efficient. To design a Multi-user IM architecture is very important in both theory and realism. Instant message based on TCP/IP protocol that is realized by sock

14、et interface. Almost all UNIX operation systems and Microsofts windows operation systems provide support of socket in the kernel. Using the uniform interface, we can develop a portable program of TCP/IP, which help us transfer information in Internet safely and credibly.The system uses the client/se

15、rver mode. The server takes the responsibility of the login message of client, the saving of friend message and Message heartbeat. The transmission of the basic messages of the customer end will be designed on P2P architecture. This thesis explains how the client and server xxmunicate via serializing XML message.Key words: Instant Message; File Transfer; Socket; TCP protocol目录第一章 引 言

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号