浅析C#中的套接字编程(4)

浅析C#中的套接字编程(4)
 

 
     客户端程序:
  
  
  1. 打开VS.net,新建一个C#的模板为“Windows 应用程序”的项目,不妨命名为“ChatClient”。
  
  
  2. 布置界面。往界面上添加一个ListBox控件(用于显示用户列表),一个RichTextBox控件(用于显示聊天消息以及系统消息),一个TextBox控件(用于发送消息),一个CheckBox控件(确定是否为悄悄话),一个StatusBar控件以及四个Button控件(分别为“连接”、“断开连接”、“开始记录”、“发送”)。各个控件的属性设置可以参见源代码中的具体设置,这里从略。界面设计好后的图象如下:
  
  
  
  3. 客户端程序的代码编写。
  
  
  当客户端试图和服务器端进行连接时,一个连接必须建立而且得向服务器端进行注册。EstablishConnection()函数运用一个TcpClient来和服务器端取得连接,同时创建一个NetworkStream来发送消息。还有,端口号和服务器端的是保持一致的,均为5555。EstablishConnection()函数如下:
  
  
  private void EstablishConnection()
  
  
  {
  
  
  statusBar1.Text = "正在连接到服务器";
  
  
  try
  
  
  {
  
  
  clientsocket = new TcpClient(serveraddress,serverport);
  
  
  ns = clientsocket.GetStream();
  
  
  sr = new StreamReader(ns);
  
  
  connected = true;
  
  
  }
  
  
  catch (Exception)
  
  
  {
  
  
  MessageBox.Show("不能连接到服务器!","错误",
  
  
  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  
  
  statusBar1.Text = "已断开连接";
  
  
  }
  
  
  }
  
  
  在和服务器端连接成功后,程序就用RegisterWithServer()函数向服务器端发送一个CONN命令。该命令先是发送该用户的名称,然后从服务器端获得其他所有用户的列表,所有用户列表是在ListBox控件中显示的。该函数如下:
  
  
  private void RegisterWithServer()
  
  
  {
  
  
  try
  
  
  {
  
  
  string command = "CONN|" + ChatOut.Text;
  
  
  Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
  
  
  ns.Write(outbytes,0,outbytes.Length);
  
  
  
  
  string serverresponse = sr.ReadLine();
  
  
  serverresponse.Trim();
  
  
  string[] tokens = serverresponse.Split(new Char[]{'|'});
  
  
  if(tokens[0] == "LIST")
  
  
  {
  
  
  statusBar1.Text = "已连接";
  
  
  btnDisconnect.Enabled = true;
  
  
  }
  
  
  for(int n=1; n
  
  
  lbChatters.Items.Add(tokens[n].Trim(new char[]{'/r','/n'}));
  
  
  this.Text = clientname + ":已连接到服务器";
  
  
  
  
  }
  
  
  catch (Exception)
  
  
  {
  
  
  MessageBox.Show("注册时发生错误!","错误",
  
  
  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  
  
  }
  
  
  }

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值