探析网上交谈工具的设计与实现(2)
2013-09-03 01:04
导读:服务器端是一个Windows窗体应用程序,命名为ChatServer。当运行服务器程序时,单击服务器窗体上的“启动”按钮后,便启动了服务器进程。为了使用Socket对
服务器端是一个Windows窗体应用程序,命名为ChatServer。当运行服务器程序时,单击服务器窗体上的“启动”按钮后,便启动了服务器进程。为了使用Socket对象和Thread对象,在代码文件中加入名字空间System.Net、System.Net..Socket、System..Threading的引用。
在服务器端使用了多线程,每个用户通过一个单独的线程进行连接,当服务器开始运行时,它就启动一个线程等待客户连接(在方法StartListen()中实现)。当接收到一个请求时,服务器立即启动一个新的线程来处理和该客户端的信息交互(在方法ServiceClient()中实现)。自定义了一个Client类,它用于保存每个当前在线用户的用户名和与服务器连接的Socket对象。当Socket连接一旦建立,就马上将其保存在一个Client对象中,以便让每个用户有自己的Socket,以后可以对不同用户的Socket对象进行操作,实现与客户端的数据交换。
在服务器窗口中,单击“启动”按钮,进入btnStart_Click处理程序。在该处理程序中,创建了一个服务器套接字并且监听本机IP地址中的一个指定的端口,同时启动一个线程等待用户连接(在方法StartListen()中实现)。StartListen()方法是在新的进程中进行的操作,它主要用于当接收到一个客户端请求时,确认与客户端的连接,并且立即启动一个新的线程来处理和该客户端的信息交互(在方法ServiceClient()中实现)。ServiceClient()方法用于和客户端进行数据通信,包括接收客户端的请求,根据不同的请求命令,执行相应的操作,并将处理结果返回到客户端,此方法完成了服务器的主要的工作。SendToClient()方法实现了向客户端发送命令请求的功能,它利用不同用户保存的Socket对象,向对应的用户发送命令请求。GetUserList()方法实现了获取当前在线用户列表的功能,它通过对clients数组的遍历,获取当前在线用户的用户名,用字符串发回。
(转载自http://zw.NSEaC.com科教作文网) 2.客户端的实现
客户端是一个Windows窗体应用程序,命名为ChatClient。当运行客户端程序时,首先进入登录界面,输入用户名,单击“登录”按钮后,进入交谈主窗口(命名为Login),在主窗口中可以向服务器发送信息,同时可以接收从服务器返回的信息。
(1)Login.cs文件的实现
Login.cs文件是登录窗体的代码文件,为了使用Socket对象,在代码文件中加入名字空间System.Net 、System.Net..Socket的引用,它主要实现了创建客户端套接字同时连接到服务器指定端口,把用户名和创建的客户端套接字传递给ChatClient窗体。