TCP网络通信程序的流程
来源:互联网 发布:高中物理老师 知乎 编辑:程序博客网 时间:2024/06/05 01:42
TCP网络通信程序的流程
(2010-05-01 20:53:38)套接字
描述符
socket
通信程序
调用函数
杂谈
分类: linux和嵌入式学习
调用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
- 基于TCP的网络通信程序演示[命令行程序]
- WSAEventSelect模型基于TCP协议的控制台网络通信程序
- TCP通信的基本流程
- tcp/ip osi网络模型层次 tcp udp通信流程
- TCP通信多线程网络聊天程序
- android的Tcp网络通信
- 简单的tcp通信程序
- 基于TCP网络通信的自动升级程序源码分析-启动升级文件下载程序
- Qt 简单的 tcp socket 通信流程
- TCP通信流程解析
- TCP通信流程解析
- TCP通信流程解析
- TCP通信流程解析
- TCP通信流程解析
- TCP通信流程解析
- Tcp/Ip通信流程
- 用户注册
- C#编程实现动态生成word文档
- 树莓派烧系统教程
- Feature Selection for Classification: A Review(二)
- 【Python】理解yield和generator(生成器)
- TCP网络通信程序的流程
- elasticsearch源码分析之使用Guice进行依赖注入与模块化系统
- codeforces510
- 一分钟了解“Matlab打印出红色报错信息error”
- 通过几段代码,理清angularJS中的$injector、$rootScope和$scope的概念和关联关系 .
- php-13
- 真正的OBS工作室版本最新消息19.0.2
- 平常水题 — Codeforces Round #415 (Div. 2) B. Summer sell-off (贪心 + 错误总结)
- android 如何预置APK