您现在的位置是:首页电子技术论文

网络工程师论文发表期刊推荐及优秀范文赏析

发布时间:2015-06-29 17:16:47更新时间:2015-06-29 17:20:04 1

  Linux和Windows是计算机中不同的两个系统,平时我们用到的一般都是Windows系统,但是在一些网络工程师做项目的时候,很多都会用到Linux,这两者也是缺一不可的。本文围绕基于Socket接口的Linux与Windows网络聊天室设计与实现,是一篇网络工程师论文范文。
  摘要:为了实现Linux与Windows跨平台通信,及时共享信息,构建了一个适用于跨平台的网络聊天室通信程序。先搭建跨平台通信环境,然后使用Socket套接字网络编程接口实现通信。整个系统采用客户机/服务器(C/S)模型,Windows客户端采用MFC框架编写,Linux服务器和客户端均采用C语言实现。通过测试,Linux和Windows的客户端可以成功连接到服务器,从而实现跨平台网络聊天功能。

  关键词:Linux,Windows,套接字,客户机/服务器

  作者简介作者简介:陈洁(1990-),女,山东菏泽人, 山东科技大学信息科学与工程学院硕士研究生,研究方向为计算机网络应用技术;孟晓景(1962-),男,浙江绍兴人, 山东科技大学信息科学与工程学院教授,研究方向为计算机网络。

  0 引言

  Linux是一个基于POSIX和UNIX的多任务、多用户、支持多线程的操作系统。Linux在众多方面表现出强大的优势,通常用在控制领域以提高系统性能。然而,目前使用最多的Windows操作系统图形界面友好,拥有良好的集成开发环境,操作简单,深受广大用户的喜爱。两种操作系统各有千秋,越来越多场合同时使用,这就出现了跨平台的通信问题。对此,本文通过Socket套接口来实现不同操作系统之间的实时聊天,运用C/S模式设计出Windows与Linux操作系统间可以互相通信的网络聊天室,本客户端可以显示其它客户端的消息,实现了信息的及时共享。

  1 Socket编程原理与过程

  1.1 Socket编程原理

  Socket[1]作为BSD UNIX的进程通信机制,通常也称作“套接字”,用于描述IP地址和端口,是网络通信的基本单元。基于TCP/IP协议的 Socket 编程是一种典型的会话编程方式,它既适用于客户/服务器通信方式,又适用于点对点通信方式。套接字通过调用系统提供的库函数实现数据传输,不需要过多了解底层的一些细节。本文采用C/S[2]通信方式编程。通信服务方式分为面向连接和无连接,这里使用的是面向连接的流套接字。

  1.2 Socket编程过程

  Socket编程过程分为客户端和服务器端编程,大致通信过程如图1所示。

  Socket编程过程首先需要创建套接字socket(),然后服务器端绑定套接字bind(),即将本地主机IP地址、端口号与创建的套接字绑定。绑定完成后进入监听状态listen(),等待客户端连接。客户端如果发起连接connect(),服务器和客户端的底层就进行三次握手接受连接accept()。连接成功后,双方就可以收发数据了。在此连接上使用send()函数发送数据,在连接的另一端使用rev()函数接收数据,这样,Socket就连接了两端的应用程序。套接字机制提供了一系列的系统调用函数,通过这些函数调用,应用程序就可以在掩盖通信协议细节的情况下实现网络传输。

  2 通信环境搭建

  本系统是跨平台网络聊天室,Linux为服务器端,用于接收客户端请求,而客户端可以是Windows操作系统,也可以是Linux操作系统。为避免使用多个计算机的麻烦,本系统在一台计算机上安装虚拟机,虚拟机为Linux操作系统,另外一个是Win7操作系统,在进行编程之前,要先检验Win7操作系统与Linux操作系统是否可以正常进行网络通信。把虚拟机端设置成桥接连接方式[3],这样虚拟机就可以当成独立机。主机IP地址为192.168.131.153 ,虚拟机地址为192.168.131.152,通过ping命令检验互通性。

  3 跨平台通信设计

  3.1 Linux平台服务器设计

  通过此函数把消息发送给每个连接的客户端;服务端程序父子进程分别负责发送和接收数据,以避免数据冲撞;本程序服务端端口号设定为:3490,端口绑定函数int bindPort(unsigned short int port) ,此函数用来创建socket(AF_INET,SOCK_STREAM,0)流套接字,并绑定到指定的端口,在Linux操作系统下不需要初始化。

  当有客户端请求连接时,accept(sockfd,(struct sockaddr*)&their_addr,&sin_size)用来接受客户端连接。连接成功后,服务器创建子进程,子进程ppid = fork()。父进程负责接收数据,子进程负责发送数据,把接收到的数据转发给已连接的客户端。

  3.2 客户端设计

  因为此程序为聊天室,所以客户端设计分为Windows平台和Linux平台。

  3.2.1 Windows平台客户端设计

  Windows客户端采用MFC框架来编写socket程序[4]。打开Visual C++6.0新建MFC应用程序,添加两个窗体,分别为登陆窗口和聊天室窗口。在登陆窗体中添加3个textBox控件,分别为textBox1(昵称输入框)、textBox2(服务器IP输入框)、textBox1(服务器端口号输入框),并添加两个button控件,分别为button1(登陆)、button2(退出)。在聊天室窗体中添加两个textBox控件,分别为textBox1(消息显示框)、textBox2(消息输入框),并添加两个button控件,分别为button1(发送)、button2(退出)。

  请求连接:新建socket、ServerIP和Port分别表示服务器IP地址和端口号,通过函数Connect(ServerIP,Port)连接到Linux服务器端,成功以后即可收发数据。   发送与接收消息:定义发送的字符串为Message,将消息输入框textBox1中的内容指定为Message,通过send()函数进行消息发送。新建一个byte数组byte[] RecvBuffer,通过Recv(RecvBuffer)函数将接收到的消息存放到RecvBuffer中,接收成功后,将内容显示到显示框。

  3.2.2 Linux平台客户端设计

  Linux平台客户端使用C语言编写。首先创建客户端套接字clientfd = socket(AF_INET,SOCK_STREAM,0),第二个参数表明为流式套接字,即面向连接;然后请求连接服务器端,通过connect(clientfd,(struct sockaddr *)&clientaddr,sizeof(struct sockaddr))这个函数请求。连接成功后,创建子进程pid = fork(),父进程用于发送信息,子进程用于接收信息。

  4 运行结果分析

  4.1 启动Linux服务器端

  4.2 启动Windows客户端

  打开Visual C++编译、连接成功后,出现登录窗体,输入姓名、服务器IP地址和端口号,点击连接,和Linux端进行连接。此时用两个客户端进行测试。和服务器端连接成功后,Windows客户端和Linux客户端可以组建一个聊天室收发消息。以Windows其中的一个客户端为例,在消息输入框中输入消息,点击发送,Linux服务器端接收到消息,然后转发给其它客户端,3个客户端分别发送完消息后,Windows其中一个客户端显示内容如图3所示。

  4.3 启动Linux客户端

  在Linux系统下执行完上述命令后,客户端就和服务器连接了, Linux客户端可以一边发送

  消息,一边接收服务器发来的消息,Linux客户端显示如图4所示。

  5 结语

  本文研究了Linux与Windows之间的通信问题。双方采用TCP/IP协议,运用socket接口来开发网络通信程序。本程序实现了网络聊天室功能,服务器能向不同的客户端同时转发另一个客户端发来的消息,不同用户可对消息及时共享。经过测试,本程序达到预期效果。

  参考文献:

  [1] 李峰.利用流式Socket编程实现Windows与Linux的通信[J].微计算机信息,2006(1):112118.

  [2] 郭勇.利用Socket开发客户/服务器应用[J].广西师范大学:自然科学版,2000,18(1):2426.

  [3] 周西峰,陆鹏,郭前岗. 利用流Socket实现Windows与Linux平台间的网络通信[J].微型机与应用,2013,32(18):4952.

  [4] 多纳霍,卡尔福特.TCP/IP socket编程[M].陈宗斌,译.北京:清华大学出版社,2009.
  网络工程师论文发表期刊推荐《计算机时代》1983年创刊,由中国工程院院士潘云鹤主编,全国公开发行。主要栏目有学术论坛、技术广角、网络天地、信息安全、应用实践、经验技巧、考试园地、市场纵览、企业信息化等,丰富的内容使您能够自由地遨游在电脑信息的海洋里,了解最新趋势,掌握最新技术,领略精彩纷呈的数字生活。


转载请注明来自:http://www.yueqikan.com/dianzijishulw/53233.html