简单的点对点聊天软件
2010-11-06 22:08
260 查看
在两台电脑上同时运行本程序,可以实现点对点的聊天。
输入对方IP,连接即可聊天。
源代码:
类ClassListener,监听通信信息。
类ClassSender,实现发送聊天信息
窗体代码中,添加连接目标计算机和发送聊天信息的程序
输入对方IP,连接即可聊天。
源代码:
类ClassListener,监听通信信息。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Threading; using System.Net.Sockets; using System.Windows.Forms; namespace PToP { public class AddMessageEventArge : EventArgs { public string mess; //定义一个全局变量 } class ClassListener { private Thread th; private TcpListener tcp1; public bool listenerRun = true; public event EventHandler<AddMessageEventArge> OnAddMessage; //启动线程开始监听 public void StartListen() { th = new Thread(new ThreadStart(Listen)); th.Start(); } //停止监听 public void stop() { tcp1.Stop(); th.Abort(); } public void Listen() { try { IPAddress addr = new IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address); IPEndPoint iplocalendpoint = new IPEndPoint(addr, 5656); tcp1 = new TcpListener(iplocalendpoint); tcp1.Start(); while (listenerRun) { Socket s = tcp1.AcceptSocket(); string remote = s.RemoteEndPoint.ToString(); Byte[] stream = new Byte[512]; int i = s.Receive(stream); string msg = "<" + remote + ">" + System.Text.Encoding.UTF8.GetString(stream); AddMessageEventArge arg = new AddMessageEventArge(); arg.mess = msg; OnAddMessage(this, arg); } } catch(Exception ex) { MessageBox.Show(ex.ToString()); } } } }
类ClassSender,实现发送聊天信息
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net; using System.Threading; using System.Windows.Forms; namespace PToP { class ClassSender { private string obj; public ClassSender(string str) { obj=str; } public void Send(string str) { try { TcpClient tcpc = new TcpClient(obj, 5656); NetworkStream tcpstream = tcpc.GetStream(); Byte[] data = System.Text.Encoding.ASCII.GetBytes(str); tcpstream.Write(data, 0, data.Length); tcpstream.Close(); tcpc.Close(); } catch(Exception) { MessageBox.Show("连接被目标主机拒绝!"); } } } }
窗体代码中,添加连接目标计算机和发送聊天信息的程序
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Net.Security; namespace PToP { public partial class Form1 : Form { //定义委托 public delegate void InvokeDelegate(); public bool appRun = true; private ClassListener Lie; private ClassSender sen; string Strs = ""; public Form1() { InitializeComponent(); } private void button3_Click(object sender, EventArgs e) { Application.Exit(); } private void Form1_Load(object sender, EventArgs e) { } //接收事件 void Lie_OnAddMessage(object sender, AddMessageEventArge e) { Strs = e.mess.ToString(); Invoke_Click(null, null); } //委托 private void Invoke_Click(object sender, EventArgs e) { textBox1.BeginInvoke(new InvokeDelegate(InvokeMethod)); } public void InvokeMethod() { if (textBox1.Text == "") { textBox1.Text = Strs; } else { textBox1.Text = textBox1.Text + "/r/n" + Strs; } } //连接目标计算机 private void button1_Click(object sender, EventArgs e) { try { //连接 Lie.listenerRun = false; Lie.stop(); } catch (NullReferenceException) { ;} finally { Lie = new ClassListener(); Lie.OnAddMessage +=new EventHandler<AddMessageEventArge>(Lie_OnAddMessage); Lie.StartListen(); } } //发送聊天记录信息 private void button2_Click(object sender, EventArgs e) { if (textBox3.Text == "") { MessageBox.Show("请输入目标主机的IP地址"); } else if (textBox2.Text == "") { MessageBox.Show("不能发送空信息!"); } else { IPAddress ipaddress = new System.Net.IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address); if (textBox1.Text == "") { textBox1.Text = "<" + ipaddress.ToString() + "> " + textBox2.Text; } else { textBox1.Text =textBox1.Text +"/r/n"+ "<" + ipaddress.ToString() + "> " + textBox2.Text; } sen = new ClassSender(textBox3.Text); sen.Send(textBox2.Text); } } } }
相关文章推荐
- 简单的点对点聊天软件
- 网络编程中简单的点对点聊天程序
- python实现简单聊天应用 python群聊和点对点均实现
- javaweb webSocket 实现简单的点对点聊天功能
- java 多线程,socket 简单模拟聊天软件
- python练习四—简单的聊天软件
- Java实现的一个简单聊天软件
- javaweb webSocket 实现简单的点对点聊天功能
- Netty实现一个简单聊天系统(点对点及服务端推送)
- Linux网络编程学习笔记-简单点对点聊天程序--6
- 基于socket实现的简单聊天android软件
- WayOs 聊天软件号码登记器,让找人变得更简单
- Android 简单的智能机器人聊天软件
- (32)--使用Socket--udp实现简单的聊天软件
- python实现简单聊天应用(群聊和点对点均实现)
- WPF使用socket实现简单聊天软件
- MFC实现简单点对点聊天程序
- 使用WebSocket设计简单聊天软件的雏形
- IM聊天进阶(二)IM>openfire>mina>nio>socket简单点对点聊天
- python练习四—简单的聊天软件