基本tcp套接字编程讲解

基本tcp套接字编程讲解

ID:9008874

大小:148.79 KB

页数:11页

时间:2018-04-14

基本tcp套接字编程讲解_第1页
基本tcp套接字编程讲解_第2页
基本tcp套接字编程讲解_第3页
基本tcp套接字编程讲解_第4页
基本tcp套接字编程讲解_第5页
资源描述:

《基本tcp套接字编程讲解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、基本TCP套接字编程讲解基于TCP的套接字编程的所有客户端和服务器端都是从调用socket开始,它返回一个套接字描述符。客户端随后调用connect函数,服务器端则调用bind、listen和accept函数。套接字通常使用标准的close函数关闭,但是也可以使用shutdown函数关闭套接字。下面针对套接字编程实现过程中所调用的函数进程分析。以下是基于TCP套接字编程的流程图:socket函数套接字是通信端点的抽象,实现端对端之间的通信。与应用程序要使用文件描述符访问文件一样,访问套接字需要套接字描述符。任何套接字编程都

2、必须调用socket函数获得套接字描述符,这样才能对套接字进行操作。以下是该函数的描述:1./* 套接字 */   2.   3./*  4. * 函数功能:创建套接字描述符;  5. * 返回值:若成功则返回套接字非负描述符,若出错返回-1;  6. * 函数原型:  7. */   8.#include    9.   10.int socket(int family, int type, int protocol);   11./*  12. * 说明:  13. * socket类似与o

3、pen对普通文件操作一样,都是返回描述符,后续的操作都是基于该描述符;  14. * family 表示套接字的通信域,不同的取值决定了socket的地址类型,其一般取值如下:  15. * (1)AF_INET         IPv4因特网域  16. * (2)AF_INET6        IPv6因特网域  17. * (3)AF_UNIX         Unix域  18. * (4)AF_ROUTE        路由套接字  19. * (5)AF_KEY          密钥套接字  20. * (6

4、)AF_UNSPEC       未指定  21. *  22. * type确定socket的类型,常用类型如下:  23. * (1)SOCK_STREAM     有序、可靠、双向的面向连接字节流套接字  24. * (2)SOCK_DGRAM      长度固定的、无连接的不可靠数据报套接字  25. * (3)SOCK_RAW        原始套接字  26. * (4)SOCK_SEQPACKET  长度固定、有序、可靠的面向连接的有序分组套接字  27. *  28. * protocol指定协议,常用取值

5、如下:  29. * (1)0               选择type类型对应的默认协议  30. * (2)IPPROTO_TCP     TCP传输协议  31. * (3)IPPROTO_UDP     UDP传输协议  32. * (4)IPPROTO_SCTP    SCTP传输协议  33. * (5)IPPROTO_TIPC    TIPC传输协议  34. *  35. */   connect函数在处理面向连接的网络服务时,例如TCP,交换数据之前必须在请求的进程套接字和提供服务的进程套接字之间建立连接

6、。TCP客户端可以调用函数connect来建立与TCP服务器端的一个连接。该函数的描述如下:1./*  2. * 函数功能:建立连接,即客户端使用该函数来建立与服务器的连接;  3. * 返回值:若成功则返回0,出错则返回-1;  4. * 函数原型:  5. */   6.#include    7.   8.int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);   9./*  10. * 说明

7、:  11. * sockfd是系统调用的套接字描述符,即由socket函数返回的套接字描述符;  12. * servaddr是目的套接字的地址,该套接字地址结构必须包含目的IP地址和目的端口号,即想与之通信的服务器地址;  13. * addrlen是目的套接字地址的大小;  14. *  15. * 如果sockfd没有绑定到一个地址,connect会给调用者绑定一个默认地址,即内核会确定源IP地址,并选择一个临时端口号作为源端口号;  16. */   TCP客户端在调用函数connect前不必非得调用bind函数

8、,因为内核会确定源IP地址,并选择一个临时端口作为源端口号。若TCP套接字调用connect函数将建立TCP连接(执行三次握手),而且仅在连接建立成功或出错时才返回,其中出错返回可能有以下几种情况:若TCP客户端没有收到SYN报文段的响应,则返回ETIMEOUT错误;若客户端的SYN报文段的响应是RST

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

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

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