tcp ip 套接字编程学习

tcp ip 套接字编程学习

ID:20020506

大小:147.85 KB

页数:5页

时间:2018-10-08

tcp ip  套接字编程学习_第1页
tcp ip  套接字编程学习_第2页
tcp ip  套接字编程学习_第3页
tcp ip  套接字编程学习_第4页
tcp ip  套接字编程学习_第5页
资源描述:

《tcp ip 套接字编程学习》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、TCP/IP、UDP的基本概念TCP/IP即传输控制协议,是一个工业标准协议集,为广域网设计的。涉及多个其他协议,主要以TCP和IP为代表。UDP即用户数据报协议。TCP/IP进行数据传输主要分为两个过程:建立连接过程和数据传输过程。TCP/IP协议通过三次握手建立一个可靠的连接,步骤:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三

2、次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。数据传输过程:发送端发送数据,然后进入等待ACK确定信号状态,随后接收端接收到数据,发送ACK确认信号,发送端接收到ACK后才发送下一组数据,同时发送端有一个定时器,定时时间到了没有接收到ACK,就认为发送失败了,进行重新发送。因为发送端发送完数据后处于等待状态,因此为了提高效率,引入“滑动窗口”的概念,就是发送的时候一次发送多组数据,相当于窗口的大小,然后当接收到第一个ACK后,就将窗口向后移动一个数据,就形

3、成了滑动窗口的情况。二、Socket编程1创建套接口:Intsocket(intfamily,inttype,intptotocol)功能:生成一个套接口描述返回值:成功返回套接口描述符,失败返回-1.参数1:family指明协议族PF_UNIX----UNIX协议族PF_INET-----IPV4协议PF_INET6---IPV6协议AF_ROUTE—路由套接口参数2:type指明通信字节流,取值SOCK_STREM----TCP方式SOCK_DGRAM---UDP方式SOCK_RAW------原始套接口参数3:ptotocol一般设置为02绑定端口:Intbind

4、(intsockfd,conststructsockaddr*my_addr,socklenaddrlen)功能:调用socket创建一个套接口后,需要使用bind函数在这个套接口上绑定一个指定的端口号和IP地址。返回:成功0,失败-1参数1:sockfd已建立的socket编号(描述符)参数2:my_addr是一个指向sockaddr结构体类型的指针参数3:addrlen表示my_addr结构的长度,可以用sizeof获得3等待监听函数Intlisten(intsockfd,intbacklog)功能:监听是指socket的端口一直处于等待的状态,监听网络中的所有客户

5、机,耐心等待某一客户机的发送请求。如果客户端有连接请求,端口就会接受这个链接。返回:成功0,失败-1参数1:sockfd已建立的套接口描述符参数2:backlog能同时处理的最大连接请求数,如果超过这个数目,客户端将接收到ECONNREFUSED拒绝连接的错误4接受连接的函数Intaccept(intsockfd,structsockaddr*addr,socketlen*addrlen)功能:服务区处于监听状态,若某时获得客户机的连接请求,此时并不是立即处理这个请求,而是将这个请求放在等待队列中,当系统空闲时在处理客户机的连接请求,接受连接请求的函数式accept。返

6、回:成功返回新的套接口描述符,失败-1参数1:sockfd表示处于监听状态的socket参数2:addr是一个sockaddr结构体类型的指针,系统会把远程主机的信息保存到这个指针所指向的结构体中。参数3:addrlen表示sockaddr的内存长度,可以用sizeof函数取得。当accept函数接受一个连接时,会返回一个新的socket标示符,以后的数据传输与读取就是通过这个新的socket编号来处理,原来参数中的socket也可以继续使用。接受链接以后,远程主机的地址和端口信息将会保存到addr所指的结构体中。5请求连接的函数Intconnect(intsockfd

7、,conststructsockaddr*serv_addr,intaddrlen)功能:客户机向服务器发送信息之前,需要先发送一个链接请求,请求与服务器建立一个连接请求,请求与服务器建立TCP通信连接。Connect函数会将本地的socket连接到serv_addr所指定的服务器IP与端口号上去。返回:成功0,失败-1参数1:sockfd表示已建立的套接口标示符。参数2:serv_addr是一个结构体指针,指向一个sockaddr结构体,这个结构体存储着远程服务器的IP与端口号信息参数3:addrlen表示sockaddr结构体的内存长

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

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

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