实验六 即时通信系统.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六 即时通信系统

实验六 即时通信系统 1.实验目的 (1)练习TcpClient和TcpListener的用法。 (2)练习NetworkStream的用法。 (3)练习StreamReadr和StreamWriter的用法。 (4)练习线程的创建和使用方法。 (5)练习解决TCP协议消息边界问题的另一种方法。 2.建议用时 建议用4-6小时完成本实验,或者根据自己的理解情况调整实际需要的时间。 3.实验内容 开发一个简单的基于TCP的即时通信系统,服务器端和客户端设计界面分别如下图所示。 功能要求: (1)任何一个客户端,均可以与服务器进行通信。 (2)服务器要能显示客户端连接的状态,当客户端连接成功后,要自动及时告知客户端已经连接成功的信息。 (3)客户端和服务器建立连接后,即可以和服务器聊天,也可以和其他任何客户聊天,用StreamReader和StreamWriter对象实现字符串的接收和发送。 (4)不论客户端何时退出程序,服务器都要做出正确判断,并显示该客户连接和断开连接的情况。 4.实验要求 (1)使用强类型的List泛型列表userList保存连接的用户。 (2)定义委托解决一个线程调用另一个线程控件的问题。 5.实验步骤提示 服务器端: (1)创建一个名为SyncChatServer的Windows应用程序,将Form1.cs换名为MainForm.cs,设计界面如图1-2所示。 (2)在解决方案资源管理器中,鼠标右键单击项目名,选择【添加】(【类】,添加一个类文件User.cs,用于保存与客户通信需要的信息。参考代码如下。 class User { public TcpClient client{ get; private set; } public StreamReader sr{ get; private set; } public StreamWriter sw { get; private set; } public User(TcpClient client) { this.client = client; NetworkStream netStream = client.GetStream(); sr = new StreamReader(netStream, System.Text.Encoding.UTF8); sw = new StreamWriter(netStream, System.Text.Encoding.UTF8); } public void Close() { sr.Close(); sw.Close(); client.Close(); } } (3)在SyncChatServer中添加对应的代码和事件。代码如下。 public partial class MainForm : Form { /// summary保存连接的所有用户/summary private ListUser userList = new ListUser(); /// summary使用的本机IP地址/summary IPAddress localAddress; /// summary监听端口/summary private const int port = 51888; private TcpListener myListener; /// summary是否正常退出所有接收线程/summary bool isNormalExit = false; public MainForm() { InitializeComponent(); listBoxStatus.HorizontalScrollbar = true; IPAddress[] addrIP = Dns.GetHostAddresses(Dns.GetHostName()); localAddress = addrIP[0]; buttonStop.Enabled = false; } /// summary【开始监听】按钮的Click事件/summary private void buttonStart_Click(object sender, EventArgs e) { myListener = new TcpListener(loc

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档