根据TCP编程模型中我们可以看到之前的socket
和bind
接口是tcp服务器在为接收客户端的链接做准备,保证tcp的面向字节流,面向连接的可靠通信服务正常进行。接下来的listen
端口则为我们进行三次握手与客户端进行链接的接口。
TCP编程模型如下
#include
int listen(int sockfd, int backlog);
sockfd
表示socket创建的套接字文件描述符backlog
指定队列的容量#include
#include
#include
#include
#include
#include
#include
#include
#include void print_err(char *str, int line, int err_no) { printf("%d, %s :%s
",line,str,strerror(err_no));_exit(-1);
}int main()
{ int skfd = -1, ret = -1;skfd = socket(AF_INET, SOCK_STREAM, 0);if ( -1 == skfd) { print_err("socket failed",__LINE__,errno);}struct sockaddr_in addr;addr.sin_family = AF_INET; //设置tcp协议族addr.sin_port = 6789; //设置端口号addr.sin_addr.s_addr = inet_addr("192.168.102.169"); //设置ip地址ret = bind(skfd, (struct sockaddr*)&addr, sizeof(addr));if ( -1 == ret) { print_err("bind failed",__LINE__,errno);}/*将套接字文件描述符从主动转为被动文件描述符,然后用于被动监听客户端的连接*/ret = listen(skfd, 3);if ( -1 == ret ) { print_err("listen failed", __LINE__, errno);}return 0;
}
因为连接请求只能由客户端发起,此时服务端的listen函数是将服务端的主动描述符转为被动描述符,否则无法用于监听客户端的连接。
TCP服务器监听客户端链接时,使用的是socket
返回的“套接字文件描述符”来实现的,但是这个文件描述符默认是主动文件描述符(主动向对方发送数据),所以需要使用listen
函数将其转换为被动描述符(只能被动得等待别人主动发送数据,再回应),否则无法用于被动监听客户端。
文章目录前言close函数介绍shutdown函数介绍 前言 这里在主要通过实例进行描述close函数在网络编程中的使用 TCP编程模型中客户端或者服务器只要主动通过close发起断开连接的请求,则通信连接可以中断。 可以通过在主进程中抓取通信端的断开信号,比如SIGINT,在信号处理函数中对该通信文件描述符进行关闭。...
一.内存管理基本知识 1.S3C2440最多会用到两级页表:以段的方式进行转换时只用到一级页表,以页的方式进行转换时用到两级页表。页的大小有三种:大页(64KB),小页(4KB),极小页(1KB)。条目也称为"描述符",有:段描述符,大页描述符,小页描述符,极小页描述符——他们保存大页,小页,极小页的起始物理地址;粗页表描述符,细页表...
关于点云的分割算是我想做的机械臂抓取中十分重要的俄一部分,所以首先学习如果使用点云库处理我用kinect获取的点云的数据,本例程也是我自己慢慢修改程序并结合官方API 的解说实现的,其中有很多细节如果直接更改源程序,可能会因为数据类型,或者头文件等各种原因编译不过,会导致我们比较难得找出其中的错误,首先我们看一下我自己设定的一个场景,...
/*
使用正态分布变换进行配准的实验 。其中room_scan1.pcd room_scan2.pcd这些点云包含同一房间360不同视角的扫描数据
*/
#include
#include
#include
#include
文章目录前言函数描述代码实例如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的主动描述符转为被动描述符进行监听之后,接口accept通过三次握手与客户端建立连接 TCP 编程模型如下: 函数描述 #i...