欢迎光临112期刊网!
网站首页 > 论文范文 > 管理论文 > 电子商务管理论文 > 网上交谈工具的设计与实现

网上交谈工具的设计与实现

日期:2023-01-05 阅读量:0 所属栏目:电子商务管理论文


[摘要] 使用visual c#.net中的socket编程的关键技术,以及多线程的知识实现一个简单的网上交谈工具,它提供的功能有:用户登录、显示所有当前的在线用户、显示进行交谈的用户信息、与选定的用户进行交谈,并且支持私人交谈。对于开发一般性的通信软件,有一定的参考价值。
  [关键词] socket tcp协议 服务器 客户端 线程
  
  一、引言
  随着信息技术的高速发展,网上交谈已成为人们学习和工作的重要手段,那么如何设计合理的、人性化的网上交谈工具就成为当务之急。使用visual c#.net中的socket编程技术,以及多线程的知识可快速、方便地设计理想的网上交谈工具。一个socket通信无论功能多么齐全、程序多么复杂,其基本结构均应包括以下步骤:创建socket对象,建立连接;打开连接到socket的输入/输出流;对socket进行读写操作;关闭socket套接字,关闭流。
  二、tcp协议通信的流程
  tcp协议是面向连接的协议,它的实现需要数据发送方和数据接收方建立数据通信连接,它的具体流程如下:
  1.服务器端首先创建服务器套接字
  2.服务器套接字监听一个端口,等待客户端的请求
  3.客户端创建一个客户端套接字
  4.客户端向服务器发送连接请求
  5.服务器确认与客户端的连接
  6.客户端和服务器利用建立的连接进行通信
  7.通信完毕后,客户端和服务器关闭各自的连接
  三、socket编程简介
  1.利用socket建立服务器程序
  要用socket建立一个tcp服务器程序,一般需要以下几个步骤:
  (1)创建一个服务器套接字,用ip地址和端口初始化服务器
  (2)监听服务器端口
  (3)确认与客户端的连接
  (4)处理客户端的请求并回应客户端
  (5)断开客户端的连接,释放客户端的连接
  (6)关闭服务器,释放服务器连接
  2.利用socket建立客户端程序
  要用socket建立一个tcp客户端程序,一般需要以下几个步骤:
  (1)创建客户端套接字
  (2)连接服务器
  (3)得到与服务器通信的流通道
  (4)向服务器发送数据
  (5)接收从服务器发回的数据
  (6)断开连接
  四、设计方案
  1.服务器端的设计
  服务器端管理着交谈任务,它维持着一张当前在线用户的列表,转发用户发送来的信息,主要功能如下:
  监听本机ip地址中的一个指定的端口。
  当有客户端向该端口发出请求时,服务器程序立即建立一个与该客户端的连接并启动一个新的线程来处理该客户端的所有请求。
  根据客户端发送来的各种不同的请求,执行相应的操作,并将处理结果返回给该客户端。服务器能识别4种请求命令:conn(建立新的连接)、chat(聊天)、priv(私聊)和exit(离开),服务器接收ascii字符信息,用“|”分隔信息的各个部分,一条信息包含一条命令,一个或多个信息参数。
  2.客户端的设计
  客户端应用程序包含用户登录窗口和用户交谈的主窗口,它允许用户登录到服务器,可以向服务器发送信息,同时可以接收从服务器返回的信息,设计的主要功能如下:
  向远程服务器发送连接请求。
  得到服务器程序的确认后,建立与服务器的连接,并获得与服务器交互的流通道(networkstream)。
  通过网络流通道与服务器端的程序进行数据通信。向服务器发送服务器能够识别的以上4种命令请求,同时也接收服务器发回的命令。客户端能够识别的命令有join(通知当前在线用户有新的用户进入聊天室)、list(更新当前在线用户)和quit(关闭客户端程序)。客户端程序接收ascii字符信息,用“|”分隔信息的各个部分,一条信息包含一条命令,一个或多个信息参数。


  五、解决方案
  1.服务器端的实现
  服务器端是一个windows窗体应用程序,命名为chatserver。当运行服务器程序时,单击服务器窗体上的“启动”按钮后,便启动了服务器进程。为了使用socket对象和thread对象,在代码文件中加入名字空间、..socket、system..threading的引用。
  在服务器端使用了多线程,每个用户通过一个单独的线程进行连接,当服务器开始运行时,它就启动一个线程等待客户连接(在方法startlisten()中实现)。当接收到一个请求时,服务器立即启动一个新的线程来处理和该客户端的信息交互(在方法serviceclient()中实现)。自定义了一个client类,它用于保存每个当前在线用户的用户名和与服务器连接的socket对象。当socket连接一旦建立,就马上将其保存在一个client对象中,以便让每个用户有自己的socket,以后可以对不同用户的socket对象进行操作,实现与客户端的数据交换。
  在服务器窗口中,单击“启动”按钮,进入btnstart_click处理程序。在该处理程序中,创建了一个服务器套接字并且监听本机ip地址中的一个指定的端口,同时启动一个线程等待用户连接(在方法startlisten()中实现)。startlisten()方法是在新的进程中进行的操作,它主要用于当接收到一个客户端请求时,确认与客户端的连接,并且立即启动一个新的线程来处理和该客户端的信息交互(在方法serviceclient()中实现)。serviceclient()方法用于和客户端进行数据通信,包括接收客户端的请求,根据不同的请求命令,执行相应的操作,并将处理结果返回到客户端,此方法完成了服务器的主要的工作。sendtoclient()方法实现了向客户端发送命令请求的功能,它利用不同用户保存的socket对象,向对应的用户发送命令请求。getuserlist()方法实现了获取当前在线用户列表的功能,它通过对clients数组的遍历,获取当前在线用户的用户名,用字符串发回。
  2.客户端的实现
  客户端是一个windows窗体应用程序,命名为chatclient。当运行客户端程序时,首先进入登录界面,输入用户名,单击“登录”按钮后,进入交谈主窗口(命名为login),在主窗口中可以向服务器发送信息,同时可以接收从服务器返回的信息。
  (1)文件的实现
  文件是登录窗体的代码文件,为了使用socket对象,在代码文件中加入名字空间 、..socket的引用,它主要实现了创建客户端套接字同时连接到服务器指定端口,把用户名和创建的客户端套接字传递给chatclient窗体。
  (2)文件的实现
  文件是客户端窗体(chatclient)的代码文件,在该文件中,首先获得与服务器通信的流通道,在用户登录后,向服务器发送conn命令以此说明有新的用户进入交谈室,服务器将返回所有的当前在线用户的呢称,选择不同的人,就可以与他们交谈了,如果选中“悄悄话”复选框,则具有私人交谈的功能。
  当加载chatclient窗体时,便会进入chatclientform_load处理程序。在该处理程序中,首先显示用户登录窗口。如果登录成功,那么获取与服务器的连接并得到与服务器数据交互的流通道,向服务器发送conn请求命令,同时启动一个新的线程用于响应从服务器发回的信息(在方法serverresponse()中实现)。serverresponse()方法用于和服务器进行数据通信,主要是接收从服务器发回的信息,根据不同的命令,执行相应的操作。当需要进行“私人交谈” 时,便进入pricheckbox_checkedchanged处理程序。在该处理程序中主要对privatemode的布尔属性进行设置。当需要发送信息时,便会进入btnsend_click处理程序。在该处理程序中,如果privatemode的布尔属性值为false(不是私人交谈),将chat命令发送给服务器;否则(为私人交谈),将priv命令发送给服务器。当用户需要离开时,便进入了btnexit_click处理程序。在该处理程序中,将exit命令发送给服务器,停止交谈。
  六、结束语
  使用socket编程的关键技术可以方便地实现网上交谈工具。利用socket可以创建服务器程序和客户端程序。服务器监听本机ip地址中的一个指定的端口,建立与客户端的连接并启动一个新的线程来处理客户端的所有请求,执行相应的操作,并将处理结果返回给该客户端。客户端向远程服务器发送连接请求,得到服务器程序的确认后,建立与服务器的连接,并获得与服务器交互的流通道并通过网络流通道与服务器进行数据通信。我们可以进一步进行功能完善,进而编译成组件应用到自己的应用程序中,开发更完美的通信软件。
  
  参考文献:
  [1]谭桂华魏亮等:visual c#高级编程范例.北京:清华大学出版社,2004年5月
  [2]吕伟臣霍言等:visual c# 2005入门与提高.北京:清华大学出版社,2006年9月
  [3]邹建峰周山峰等:c#企业级开发案例精解.北京:人民邮电出版社,2006年1月
本文链接:http://www.qk112.com/lwfw/guanlilunwen/dianzishangwuguanlilunwen/39900.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学