Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)qqpublished in(发表于) 2014/7/11 9:29:26 IP聊天室实例
C#教程:开发TCP/IP聊天室实例|方法
开发TCP/IP聊天室本示例通过TCP实现在客户端与服务器端计算机之间进行通信。本实例运行时,首先打开服务器端程序,输入用户名单击【登录】按钮完成服务器的开启;然后运行客户端程序,同时输入用户名,登录程序(这里的端口号都默认为11000),然后单击任何一方的【发送】按钮,对方将收到信息,并显示在自己的信息列表中。实例运行结果如图1和图2所示。图1 “服务器”运行窗体图2“客户端”运行窗体服务器端实现的具体步骤如下所示。(1)在VS2005项目中添加一个窗体。(2)在窗体中添加3个TextBox文本框,分别用于获取用户名、显示与发送信息。(3)在窗体中添加3个Button按钮和3个Label控件,分别用于激发事件和显示信息。(4)程序主要代码。首先添加对命名空间的引用,代码如下:using System.Net;using System.Threading;using System.Net.Sockets;然后定义在程序中要用到的变量,代码如下:#region//定义变量IPAddress HostIP = IPAddress.Parse("127.0.0.1");IPEndPoint point;Socket socket;bool flag = True;Socket acceptedSocket;#endregion单击【登录】按钮,实例化一个Socket对象,令其开始侦听,当侦听到信息时,开启一个新的进程,调用新的方法(Proccess)显示信息。【登录】按钮的Click事件代码如下:private void button1_Click_1(object sender, EventArgs e){HostIP = IPAddress.Parse("127.0.0.1");try{point = new IPEndPoint(HostIP, Int32.Parse("11000"));socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);socket.Bind(point);socket.Listen(50);acceptedSocket = socket.Accept();Thread thread = new Thread(new ThreadStart(Proccess));thread.Start();}catch (Exception ey){MessageBox.Show(ey.Message);}}声明委托以及委托所要代理的事件,为进行调用控件作准备,代码如下:#region//声明委托delegate void SetTextCallback(string text);private void SetText(string text){textBox2.AppendText(text + "rn");}#endregion进程所要调用的方法,用于显示来自其他机器的信息。代码如下:#region//进程方法private void Proccess(){if (acceptedSocket.Connected){while (flag){byte[] receiveByte = new byte[64];acceptedSocket.Receive(receiveByte, receiveByte.Length, 0);string strInfo = Encoding.BigEndianUnicode.GetString(receiveByte);this.Invoke(new SetTextCallback(SetText), new object[] { strInfo });}}}#endregion通过Socket类的Send方法,实现信息的发送。【发送】按钮的Click事件代码如下:private void button2_Click_1(object sender, EventArgs e){try{Byte[] sendByte = new Byte[64];string sendStr = this.textBox1.Text + ":" + this.textBox3.Text + "rn";sendByte = Encoding.BigEndianUnicode.GetBytes(sendStr.ToCharArray());acceptedSocket.Send(sendByte, sendByte.Length, 0);}catch { }}客户端实现的具体步骤如下所示。(1)在VS2005项目中添加一个窗体。(2)在窗体中添加3个TextBox文本框,分别用于获取用户名、显示与发送信息。(3)在窗体中添加3个Button按钮和3个Label标签,分别用于激发事件和显示信息。(4)程序主要代码。单击客户端窗体中的【登录】按钮,通过Socket类的Connect方法连接到指定的机器,同时也开启一下新的进程。【登录】按钮的Click事件代码如下:private void button1_Click(object sender, EventArgs e){HostIP = IPAddress.Parse("127.0.0.1");try{point = new IPEndPoint(HostIP, Int32.Parse("11000"));socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);socket.Connect(point);Thread thread = new Thread(new ThreadStart(Proccess));thread.Start();}catch(Exception ey){MessageBox.Show("服务器没有开启rn"+ey.Message);
赞