计算机网络编程应用初探

2018-10-21 20:44代承坤
科学导报·学术 2018年40期
关键词:聊天室局域网客户端

摘要:计算机网络编程目前应用普遍的就是在WINDOWS平台上,以C语言为编程语言,实现局域网内的即时通信工功能即聊天的功能。本设计是基于Windows Socket的编程,分别在同一局域网内的两台PC机的VC++ 6.0平台上运行服务端和客户端程序。服务器与客户端在Windows7 环境下采用了TCP/IP连接方式,由客户端登录到服务端PC机,实现客户端与服务端PC的信息传输。

关键词:网络编程;程序设计;VC++6.0;socket;TCP/IP;C语言

一、网络编程的意义

本系统采用基于Socket的方法实现局域网通信,基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。

基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点[3] 。基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。

二、网络编程的应用

目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为Live Messenger)以及跨平台Gaim等。本人取最具代表性的QQ和MSN进行了一些研究,作为开发聊天系统的准备。

腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。

参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。与腾讯QQ不同,微软的MSN Messenger只使用了TCP作为传输层通信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。

腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。而MSN Messenger所有数据都要经过服务器,服务器压力可想而知(难怪平时很少见到使用MSN进行语音视频聊天的)。

上述软件都实现了广域网上的即时通信,在使用方面各有特色,在实现方面也各有所长。但是随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部,所以局域网的聊天工具也占了很大的市場[4] 。

三、网络编程的工具

VC6.0是微软推出的一款可视化编程工具,适用面非常广泛。VC6.0包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。使用VC6.0,可以完成创建、调试、修改应用程序等的各种操作。

VC6.0采用标准的多窗口Windows用户界面,并增加了一些新特性,使得开发环境更易于使用,用户很容易学会它的使用方法。

由于VC6.0是一个可视化的开发工具,在介绍VC6.0的各个组成部分之前,首先了解一下可视化编程的概念。可视化技术是当前发展迅速并引人注目的技术之一,它的特点是把原来抽象的数字、表格、功能逻辑等用直观的图形、图象的形式表现出来。可视化编程是它的重要应用之一。所谓可视化编程,就是指:在软件开发过程中,用直观的具有一定含义的图标按钮、图形化的对象取代原来手工的抽象的编辑、运行、浏览操作,软件开发过程表现为鼠标点击按钮和拖放图形化的对象以及指定对象的属性、行为的过程。这种可视化的编程方法易学易用,而且大大提高了工作效率。

所谓socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

Socket原来是UNIX的Berkeley Software Distributiion版本中的一个程序接口,属于系统调用。在Windows操作系统下,WinSock是定义于视窗应用程序与网络之间的标准界面。程序设计者利用WinSock的标准规格,完全不考虑所使用的网卡硬件部分,WinSock所提供的动态连接程序库(WS2_32.DLL)完成与网络底层驱动程序协同的工作,WinSock采用套接字(端口号+IP地址)方式建立与网络上其他计算机的连接。

四、网络编程的流程

首先启动聊天室的服务端,设置端口,打开监听。然后启动客户端(可启动多个),设置用户昵称和连接端口等信息,连接服务器。进入聊天室后用户之间可以进行简单的文字聊天。当用户发送信息后,服务器会收到用户发送的信息,然后服务器把收到的信息发送给所有在线用户。这样登入服务器的用户们之间就可以进行简单的文字聊天了。当用户进入聊天室后,服务器会发送相应的消息通知该用户进入了聊天室。当用户断开连接后,服务器也会通知该用户下线。整个聊天室基于CSocket的流式连接放大。基于TCP传送控制协议。该协议所要求用户必须先确定连接成功后才能发送消息,如果是UDP协议那可以不进行连接过程,这样实时性比较好。

五、结语

网络编程的聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。

参考文献:

[1] 李凌.WinSock 2网络编程实用教程[M].北京:清华大学出版社,2005.

[2] 冯宏华,徐莹.C++应用程序性能优化[M].北京:电子工业出版社,2007.

[3] 张虹.软件工程与软件开发工具[M].北京:清华大学出版社,2009.

作者简介:

代承坤(1982.3)男,汉,云南曲靖,云南工业技师学院,大学本科,讲师,研究方向:计算机程序设计。

(作者单位:云南工业技师学院)

猜你喜欢
聊天室局域网客户端
双胞胎在这儿呢
虚拟专用网络访问保护机制研究
计算机局域网组建及管理探讨
新闻客户端差异化发展策略
用无线路由器共享单位局域网
小胖墩儿要“越狱”
名画家的聊天室
局域网存在的安全隐患及其防治策略
浅析IEEE 802.1x及其客户端软件
阅读理解两则