在计算机网络中,监听是一种常见的网络编程模型,它允许一个应用程序通过一个固定的端口等待网络上的数据请求,从而能够及时地响应客户端的请求,并进行数据的传输和交互。在Linux系统上,通过一些基本的函数和方法,我们可以非常简单地实现监听的功能,下面我们将具体介绍如何创建监听。
之一步:选择一个合适的协议
在Linux系统中,有多种协议可以用于创建监听,比如TCP和UDP等。对于不同的应用场景和数据传输要求,我们需要选择相应的协议来创建监听。
对于TCP协议来说,它是一种可靠的协议,在数据传输过程中会保证数据包的可靠性和完整性。因此,对于需要进行大量数据传输的应用场景,我们通常会选择TCP协议来创建监听。
而对于UDP协议来说,它是一种简单的协议,在数据传输过程中并不能保证数据包的可靠性和完整性。但是,UDP协议具有传输速度快、数据传输压力小的优点,因此,对于一些轻量级的数据传输任务,我们可以选择UDP协议来创建监听。
在选择协议之后,我们就可以开始准备创建监听的程序了。
第二步:创建Socket文件
在Linux系统中,Socket是一种用于网络通信的抽象概念,我们需要通过创建Socket来完成监听的功能。
在创建Socket之前,我们需要通过socket()函数创建一个套接字,这个套接字是负责网络通信的基本单位。创建套接字的代码如下:
int socket(int domn, int type, int protocol);
在socket()函数中,需要传入3个参数:domn、type和protocol,分别表示地址族、套接字类型和协议类型。我们需要根据实际需求选择合适的参数。
比如,对于TCP协议来说,常用的domn参数是AF_INET,表示使用IPv4地址族;常用的type参数是SOCK_STREAM,表示使用流式套接字;protocol参数一般会设为0,表示使用默认的协议类型。
而对于UDP协议来说,常用的domn参数也是AF_INET,type参数则是SOCK_DGRAM,protocol参数同样设为0即可。
第三步:绑定IP地址和端口号
在创建好Socket之后,我们需要对套接字进行一些设置,比如设置IP地址和端口号等。这个过程可以通过bind()函数来实现,它的作用是将Socket文件和本地IP地址与端口号进行绑定。bind()函数的代码如下:
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
在bind()函数中,需要传入3个参数:sockfd、addr和addrlen,分别表示Socket文件描述符、本地IP地址和端口号的结构体,以及结构体的长度。我们需要根据实际需求设置相应的参数。
比如,对于TCP协议来说,可以设置本地IP地址和端口号如下:
struct sockaddr_in servaddr;
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(8080);
bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
而对于UDP协议来说,可以设置本地IP地址和端口号如下:
struct sockaddr_in servaddr;
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;

servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(9898);
bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
第四步:启动监听
在设置好IP地址和端口号之后,我们就可以开始启动监听了。这个过程可以通过listen()函数来实现,它的作用是在Socket文件上开启监听模式,等待客户端连接。listen()函数的代码如下:
int listen(int sockfd,int backlog);
在listen()函数中,需要传入2个参数:sockfd和backlog,分别表示Socket文件描述符和更大等待连接的数量。我们需要根据实际需求设置相应的参数。
比如,对于TCP协议来说,可以启动监听如下:
listen(listenfd,1024);
而对于UDP协议来说,由于UDP协议是无连接的,因此不需要执行listen()函数。
第五步:接收并处理客户端请求
在启动监听之后,我们就可以等待客户端的请求了。这个过程可以通过accept()函数来实现,它的作用是接受客户端的连接请求,创建一个新的Socket文件,并返回新的Socket文件描述符。accept()函数的代码如下:
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
在accept()函数中,需要传入3个参数:sockfd、addr和addrlen,分别表示Socket文件描述符、指向客户端地址结构体的指针,以及客户端地址结构体的长度。我们需要根据实际需求设置相应的参数。
对于TCP协议来说,在接受客户端连接之后,我们就可以开始接收和处理客户端的请求了,比如进行数据传输、交互和计算等操作。
而对于UDP协议来说,则不需要执行accept()函数,因为UDP协议是无连接的,客户端可以直接向 服务器 发送数据。
相关问题拓展阅读:
如何在Linux suse中安装Oracle 11g创建监听
没有装中文字体,所以出现乱码。
也隐棚闹可以在启动灶罩安装程序之前,在shell里执行,
export LANG=c
把console的语言改成英文,安装的时候会用英文,和巧就不会有问题了
关于linux下如何建监听的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
怎么查看linux上有几个端口
在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询netstat命令各个参数说明如下:-t : 指明显示TCP端口-u : 指明显示UDP端口-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。-n : 不进行DNS轮询,显示IP(可以加速操作)3即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··netstat -ntlp //查看当前所有tcp端口·netstat -ntulp |grep 80 //查看所有80端口使用情况·netstat -an | grep 3306 //查看所有3306端口使用情况·4例如要查看当前Mysql默认端口3306是否启动可以做如下操作
linux个人目录,当前工作目录;相对路径和绝对路径的概念是什么啊?
个人目录: 你的帐户所在的目录,通常在shell里 HOME 环境变量就是这个目录。 比如我的 帐户 xs220: xs220@Zealot:~> echo $HOME /home/xs220 这个/home/xs220/就是我的个人目录。 当前工作目录,很好理解把,你在哪个目录下工作,就是哪里。 可以用命令pwd (print working directory) 查看: xs220@Zealot:~/Desktop> pwd /home/xs220/Desktop 通常shell里的PWD环境变量也是存储的这个值,比如: xs220@Zealot:~/Desktop> echo $PWD /home/xs220/Desktop ======================== 绝对路径: linux上的文件系统从/目录开始,绝对路径就是从/开始,到你想要的目录的完整的路径,比如刚才的例子中: xs220@Zealot:~/Desktop> pwd /home/xs220/Desktop 这个/home/xs220/Desktop就是个绝对路径。 你无论在哪个当前目录下面都可以用绝对路径找到你的文件。 比如你的Desktop目录下有个可执行文件叫吧,你在哪里都可以通过绝对路径找到这个可执行文件,并且执行他。 如 xs220@Zealot:~/books> /home/xs220/Desktop/ This is a binary file. xs220@Zealot:~/books> 这个例子中,我在~/books目录下,也通过绝对路径运行了 相对路径,就是相对于当前目录的表达法,比如,还是这个例子,books目录下有个文件 xs220@Zealot:~/books> ./ This is another binary file. xs220@Zealot:~/books> 其中./就是最简单的相对路径,.表示当前目录,这个相对路径说,当前目录下有个文件。 相对路径也可以更复杂一点: xs220@Zealot:~/books> ../Desktop/ This is a binary file. xs220@Zealot:~/books> ..表示上一级目录,这个相对路径说,上一级目录里有个Desktop目录,他下面有个文件。 总之,绝对路径就是从/开始的路径,全写出来。 相对路径就是相对于当前的目录的路径,从当前目录开始,用., ..等表示。
创建监听端口是什么意思?
在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。 可见,把数据报顺利的传送到目的主机是没有问题的。 问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。 本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。 当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。 说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。 端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。 不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口
发表评论