基于tcpip的局域网多用户通信

基于tcpip的局域网多用户通信

ID:30808423

大小:220.07 KB

页数:12页

时间:2019-01-03

基于tcpip的局域网多用户通信_第1页
基于tcpip的局域网多用户通信_第2页
基于tcpip的局域网多用户通信_第3页
基于tcpip的局域网多用户通信_第4页
基于tcpip的局域网多用户通信_第5页
资源描述:

《基于tcpip的局域网多用户通信》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于TCP/IP的局域网多用户通信作者:华东船舶工业学院机械系袁渊下载本文示例源代码摘要:基于TCP/IP的网络通信技术实现了面向连接的用户与服务器间点对点异步通信,本文在该基础上应用了多线程以及共享数据结构技术,使网络服务器具有了多用户间数据转发的功能,进而解决了局域网多用户间的通信问题。关键词:TCP/IP;多线程;共享;通信;网络引言由于因特网的迅速流行,越來越多的应用程序具备了在网上与其它程序通信的能力。从WIN95开始微软把网络功能融进了它的操作系统,使得应用程序网络通信能力更为普及。

2、因此,微软的TCP/IP协议也就成为网络应用程序基于的首选协议。一般采用TCP/IP协议的应用程序只实现了单用户与服务器间点对点的连接,而本文在VC6.0的坏境下,运用了了多线程以及共享数据结构技术,不仅实现了多用户与服务器间的连接,而且解决了多用户间信息互发问题一一依靠服务器的转发功能。通过本文的阐述,希望能对那些需要编写多用户网络通信程序的读者以启发。一、技术概述1.1基于TCP/IP的通信技术基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两

3、部分。下面简要地讲一下设计思路(VC6.0下):第一部分服务器端一、创建服务器套接字(create)。二、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。三、接受來自用户端的连接请求(accept)o四、开始数据传输(send/receive)o五、关闭套接字(closesocket)。第二部分用户端一、创建用户套接字(create)。二、与远程服务器进行连接(connect),如被接受则创建接收进程。三、开始数据传输(send/receive)o四、关闭套接字(close

4、socket)。通过以上设计思路,我们可以创建一个简单的面向连接的单用户程序。下面,将介绍多线程技术,以使程序支持多用户。1-2多线程技术我们可以把线程看成是一个进程(执行程序)中的一个执行点,每个进程在任何给定时刻可能有若干个线程在运行。一个进程中的所有线程共享该进程中同样的地址空间,同样的数据和代码,以及同样的资源。进程中每个线程都有自己独立的栈空间,和其它线程分离,并且不可互相访问。每个线程在本进程所占的CPU时间内,要么以时间片轮换方式,要么以优先级方式运行。如果以时间片轮换方式运行,则

5、每个线程获得同样的时间量;如果以优先级方式运行,则优先级高的线程将得到较多的时间量,而优先级低的线程只能得到较少的时间量。方式的选择主耍取决于系统时间调度器的机制以及程序的实时性耍求。现在,运用多线程技术就可以实现对多用户的支持。即在服务器端,使接收來自用户端的连接请求(accept)这步无限循坏,每接收一个用户请求,产生两个线程(send和receive线程),用來管理服务器与该用户的通信任务。下面,运用共享数据结构技术,就可以实现本问所要解决的关键技术一■服务器转发技术。1-3共享数据结构技

6、术同一进程中的多个线程共存于单一的线性地址空间,因此,在多线程间共亨数据结构是非常容易且方便的。但必须注意的是,对数据结构的访问必须是多线程互斥的,否则数据任意更改将导致不可预料的结果。本文所阐述的服务器转发技术也就是通过共享数据结构实现线程间的互相通信。二、实现方案整体方案的构思图如下:通过上图,我们可以看到整个系统分为三个相关的程序,即注册/登陆服务器、通信服务器以及用户程序。其屮,注册/登陆服务器负责用户的注册、登陆以及数据库管理;通信服务器负责完成数据转发以及共享数据结构的管理;用户端则

7、完成注册、登陆和通信功能。为什么要把服务器分为两部分呢?主要是考虑到服务器的用户容量问题,以及对通信服务器的保护,只有在通过验证后,用户在能与通信服务器连接。由此可见,整个系统通信任务的实现还是很复杂的。用户端首先必须注册白己,等待注册成功;然后根据自己的注册信息进行服务器登陆,登陆成功后才能与通信服务器连接,进行用户间通信。注册/登陆服务器接收到用户端的信息后,首先判断是注册信息还是登陆信息。如果是注册信息,则将该数据按预定的格式写入数据库,然后返回注册成功的消息,期间有任何异常产生,服务器都

8、会返回注册失败消息,提示用户重新注册;如果是登陆信息,则从数据中提取用户名和ID与数据库中的内容进行比较,如果该用户存在,则返冋登陆成功消息,反之,返回登陆失败消息。通信服务器所完成的主要功能是数据转发,这是通过与图川的共享数据结构进行交互完成的。服务器接收到用户端发来的消息后,提取消息的一部分与共享数据结构存储的内容进行比较,确定所要转发的对象,最后通过多线程及其通信机制完成数据转发。下面,我们将分三部分來讨论系统的具体实现过程。Q三、具体实施3.1注册/登陆服务器注册/登陆服务器程序是基于对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。