首页 > 范文大全 > 正文

Linux环境下基于Socket的网络通信技术研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇Linux环境下基于Socket的网络通信技术研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:在现代科学技术迅速发展的推动下,人们的日常生活中对于网络通信功能的使用已经可以说成为一种依赖,我们对于网络通信的需求则出现在了生活中的方方面面。因为我们对于网络通信的强烈的需求,所以关于高性能的网络通信也越来越被人们所关注。linux网络是一种操作系统,在这个开放的网络平台上,我们可以进行高性能的网络通信的开发。在现在的网络发展中,Linux环境基于socket网络通信技术的开发和研究已经成为主流,为大多数人所关注。而Socket是一种套接字规范作为程序通信的方式,是可以作为与网络设备和应用程序之间的编程接口。更为重要的是,Socket接口是在Linux网络环境下的用于应用程序与下层协议的唯一途径。因Socket接口对于Linux环境的重要性,所以我们要对Linux环境下基于Socket的网络通信技术进行研究,提高网络通信效率。

关键词:Linux环境;Socket;网络通信技术

中图分类号:TP316 文献标识码:A

随着网络通信日益为人们的日常生活所依赖,我们对于高性能的网络通信的要求也是越来越高。网络的工作状况对于一个操作系统来说就是最需要的基础性的支持,因此网络的支持程度就显得尤为重要。在现行众多的操作系统中,Linux操作系统有着较好的优势。Linux操作系统是一种可以进行多任务的操作系统,内核小、效率高。Linux操作系统本身还具有较高的安全性,这在网络通信方面是非常引人关注的一点,Linux操作系统还具有良好的兼容性,可以兼容大多数的网络协定,保障运行的效率。因为这些优势,Linux操作系统的应用度非常广泛,对于Linux操作系统的网络通信的研究也成为当下的一股热潮。Socket则作为Linux操作系统的唯一连接接口,对于高性能的网络通信程序开发有着很大的奠基作用。Socket即套接字,是一种连接应用层和传输层之间的编程接口,具有访问下层通信协议的功能,并且可以调用相应的数据。在这种情况之下,我们就要进行Linux环境下基于Socket的网络通信技术研究,希望可以设计出性能更高的网络通信技术。

1.基于SOCKET下的网络通信原理

现在的网络通信大多数都是由客户机和服务器构成的,即C/S架构,此外还有一种是由浏览器和服务端构成的,即B/S架构。这两种网络通信方式即是现在的网络通信的主流通信方式。这都是先通过了解客户需求,由子程序进行沟通和处理,而子程序则由主程序进行统一控制,以主程序为代表控制多个子程序来和客户进行通信。在网络通信中,Socket即套接字是非常重要的。在一个个网络进程运作的时候,我们都是通过对不同的进程进行标注,才可以加以区别。Socket就是一个个的网络进程的ID,只有我们明确了这些ID,我们才可以进行网络间的进程通信,把一个一个进程连接起来完成,从而完成我们需要的网络通信。我们的计算机现在已经越来越复杂,我们的计算机在进行运作的时候,一般都开启的不只是一个进程,对于这些进程的区分,我们就可以用Socket来完成。Socket除了可以担当ID的作用,还可以再进行细分,这样就会含有别的信息,即端口号。在计算机运行时,进程与端口号呈现一一对应的关系,这样能够避免出现运行误差,极大的提高网络通信的运行效率。Socket的网络协议还具有非常多的类型,工作方式也不尽相同,地址格式也不相同,相同的网络协议地址就可以用组成协议地址族,见表1。

对于这些套接字地址族,我们都是可以将其作为统一的套接字接口,可以被专有各地址族的软件所使用。有了这些前提,Socket下的ID和端口号的相互配合之下,我们的网络通信才可以得到实现。

2. LINUX网络通信设计

了解了Socket下的网络通信原理之后,我们就可以进行对Linux的网j通信设计了。对于Linux的网络通信设计,我们主要从工作流程、数据发送模块和数据接受模块3个方面来进行入手。

2.1 工作流程

对于Linux的网络通信进行设计,我们要先熟悉Linux的网络通信的通信流程。因此,我们要先从Socket开始。我们首先要做的就是建立起套接口,int socket=socket(intdomain,int type,int protocol);然后对建立的套接口进行绑定,给与建立的套接口一个地址,这个地址里包含有计算机的IP地址和端口号等一些基础信息,可以为套接口进行进程间的连接做好准备;客户端就可以请求连接网络,客户端会通过未被占用的端口来进行进程;在程序运行的时候,Socket会与相应的端口进行一对一的连接,并且会对连接的端口进行监听,以便在收到请求的时候及时地给予相应的处理;请求的队列过大会导致服务不会回应或是回应过慢,在队列减少则会尽快处理;处理完就可以将结果传输出去了,send和recv这两个函数可以完成对Socket进行数据传输;发送数据和接收数据,传输完毕之后,就可以关闭连接了。这样就可以完成整个客户访问的进程间的通信了。

2.2 数据发送模块

我们对于Linux操作系统中对于进程间的数据发送,是采用Socket函数来进行的。Int send和int recv这两个函数可以应用于套接字在进程间的通信。Send函数是用于发送数据的,如果出现了小于len的情况,就代表着数据有部分没有发送,只是发送了一部分,我们就需要再次发送来完成我们的数据发送。我们进程间的数据发送都是通过调用函数来进行的,通过函数来进行网络的连接,连接好了网络,我们才可以进行发送数据了。我们将数据顺利地发送出去之后,进程间才可以顺利地通信。

2.3 数据接收模块

我们有数据发送,当然也要有数据接收。当网络上的数据被计算机接收到了计算机,会产生一些控制器的中断,导致计算机运行出现故障。这个时候计算机的中断调控处理程序开始工作,对接收到的数据进行处理,相应地处理程序,寄存器开始工作,对接收的新数据进行记录及存储。我们在函数中要正确的设定寄存器的内容,不然我们的计算机将无法对新接收的数据进行处理。出现不同的函数时,代表的意义也是不一样的。我们就可以进行一些举例:当CPR二BNRY时,代表着缓冲区全部被存满,新接收的数据无法被使用;这时网卡将停止往内存写数据,新接收的数据将被抛弃,而无法存到我们的计算机里面;当CPR二BNR卜1时,表示网卡的接收缓冲区里没有数据,我们可以通过这个数据来判断是否有数据可以使用。

只有显示CPR!二BNRY十1时,才代表接收到了新的数据,并处于正常的存储状态,可以为我们所使用。

3. Socket网络通信模型

网络通信模型,最基础的是C/S的网络通信模型。对于这种网络通信模型,我们可以在这个网络通信模型中发现两个部分:客户程序和服务程序。我们的客户程序是由客户来进行提出请求,然后我们的服务程序开始工作,接收请求并建立连接,连接建立以后我们就可以让客户对于我们的网络通信中的数据建立起连接,客户就可以自行读取数据,进行使用。但是应用程序在使用Socket接口来读取数据之前,我们要先进行Socket函数的调用,有了Socket函数的支持,我们才可以完成通信间的连接,以此来完成整个客户程序的使用进程和服务进程的网络通信。网络通信的模型如图1所示。

结语

在这个网络发展迅速的时代,人们对于网络的要求也是越来越高,同时也带动了人们对高性能网络的开发和研究。Linux网络可以可以进行网络资源的共享,完成网络通信,而且具有较高的安全性。Linux网络还具有内核小,包含着很多的网络协议,还有开放的源代码,我们可以利用Linux网络进行基于Socket的网络通信技术的开发。Socket作为其中的接口起着举足轻重的作用,连接起了网络设备和应用程序与下层协定,从而完成设备和网络之间的网络通信。我们对于Linux环境下基于Socket的网络通信技g进行研究,希冀于提高网络通信效率,建立起更好的,性能更高的网络通信技术。

参考文献

[1]莫足琴,欧阳艳阶,马康.基于 Java Socket 多客户端并发通信聊天程序的设计与实现[J].电脑知识与技术,2008(20):63-65.

[2] Douglas. Comer, David L.Stevens. TCP/IP客户-服务器编程与应用[M].北京:清华大学出版社,2004.

[3]农孙博,范正刚. Linux平台下的Web编程[M].北京:人民邮电出版社,2000.

[4]刘春风,张代远.μC/OS-II下协议栈uIP的移植与应用[J].计算机技术与发展,2012,22(9):143-145.

[5]高栩宇,马林华,南秦博.基于L州ux操作系统下的cT即IP网络通信研究与应用[J].现代电子技术,2006,29(18):74-76.