tcp通信函数详解
来源:互联网 发布:四川网络推广托管 编辑:程序博客网 时间:2024/05/17 01:21
服务器程序首先进行初始化操作:
调用socket创建一个套接字,函数bind将这个套接字与服务器公认地址绑定在一起,函数listen将这个套接字转换成倾听套接字(listening socket),然后调用函数accept来接受客户机的请求。在通信的另外一端,客户机调用函数socket创建一个套接字,然后调用函数connect来与服务器建立连接。连接建立之后,客户机与服务器通过读、写套接字来进行通信。如下图:
简单的TCP/IP交互过程
int socket(int domain,int type,int protocol);
参数domain指定要创建的套接字的协议簇地址类型,参数type指定套接字类型,参数protocol指定协议类型,通常设置为0,表示使用默认协议。如果函数执行发生异常,将返回值为-1的错误码,程序需要对这个返回值进行检查以保证程序的正常运行。下面介绍的connect、bind、accept、listen、recv、send等函数都是在发生错误的时候返回-1,程序必须对函数的返回值进行检查。
int connect(int sockfd,struct sockaddr *servaddr,int addrlen);
参数sockfd是函数socket返回的套接字描述符;参数servaddr指定远程服务器的套接字地址,包括服务器的IP地址和端口号;参数addrlen指定这个套接字地址的长度。在程序中的调用方法实例如下:
struct addrinfo *si;
connect(sockfd,si->ai_addr,si->ai_addrlen);
int bind(int sockfd,struct sockaddr *myaddr,int addrlen);
参数sockfd是函数socket返回的套接字描述符;参数myaddr是本地地址;参数addrlen是套接字地址的长度。
int listen(int sockfd,int backlog);
参数sockfd是指定要转换的套接字描述符;参数backlog设置请求队列的最大长度,表示在accept函数之前同时最多有多少客户连接到这个套接字。
int accept(int sockfd,struct sockaddr *addr,int *addrlen);
参数sockfd是指定倾听套接字描述符;参数addr为指向一个套接字地址结构的指针;参数addrlen是地址数据的长度。函数的返回值也是一个套接字,程序可以用这个套接字与客户端进行通信。如果程序不需要继续接收客户端连接,可以用close函数关闭原来的倾听套接字。
int send(int sockfd,const void *buf,int len,int flags);
int recv(int sockfd,void *buf,int len,int flags);
参数sockfd指定读写操作的套接字描述符;参数buf指定数据缓冲区;参数len指定接收或发送数据量大小。参数flags一般可以设置为0。
- tcp通信函数详解
- TCP通信常用的send,sendto,recv,recvfrom函数详解
- TCP协议握手协商通信详解
- TCP IP协议之通信详解
- 网络通信2:TCP的函数
- TCP 通信
- TCP 通信
- TCP通信
- TCP-通信
- TCP通信
- Tcp通信
- TCP通信
- TCP通信
- TCP通信
- TCP通信
- TCP 通信
- TCP通信
- TCP通信
- AS3微软效果库开发日记(一)
- 网页设计十条经验总结
- GeoJSON介绍
- 基于Github参与eoe的开源项目指南
- Linux常用命令总结
- tcp通信函数详解
- yyyy
- 数据结构--循环单链表
- lftp下载上传限速
- 代码的坏味道之二十一 :Refused Bequest(被拒绝的遗贈)
- QT中OPENGL的实时绘制
- socket同步异步,阻塞,非阻塞的概念解析集合
- 从B 树、B+ 树、B* 树谈到R 树
- flume 几个比较有用的source、sink和decorator