在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#网络编程 → <赞>C# 实现 服务器端和客户端Socket通讯,聊天功能实现源码

<赞>C# 实现 服务器端和客户端Socket通讯,聊天功能实现源码

C#网络编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.05M
  • 下载次数:72
  • 浏览次数:786
  • 发布时间:2013-02-17
  • 实例类别:C#网络编程
  • 发 布 人:星火燎原
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Socket 聊天

实例介绍

【实例简介】简单的实现了服务器和客户端的聊天功能
【实例截图】


【核心代码】
服务器端代码:

 

/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main()
		{
			Application.Run(new Form1());
		}
		// 定义私有变量。
		public bool m_bConnected = false;
		public IPEndPoint p = null;
		public Socket s = null;
		public NetworkStream ns = null;
		public TextReader r = null;
		public TextWriter w = null;
		public Thread t = null;
		public void ThreadListen()
		{
			Socket recv = null;
			recv = s.Accept();
			if(recv != null)
				m_bConnected = true;
			ns = new NetworkStream(recv);
			r = new StreamReader(ns);
			w = new StreamWriter(ns);
			while(m_bConnected)
			{
				string tmp;
				try
				{
					tmp = r.ReadLine();
					if(tmp.Length != 0)
					{
						lock(this)
						{
							richTextBox1.Text = "他说:" tmp "\n" richTextBox1.Text;
						}
					}
				}
				catch
				{
					MessageBox.Show("连接断开!!");
				}
			}
			recv.Shutdown(SocketShutdown.Both);
			recv.Close();
			s.Shutdown(SocketShutdown.Both);
			s.Close();
		}
		private void button1_Click(object sender, System.EventArgs e)
		{
			p = new IPEndPoint(IPAddress.Any, 34567);
			s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
			s.Blocking = true;
			s.Bind(p);
			s.Listen(0);
			t = new Thread(new ThreadStart(this.ThreadListen));
			t.Start();
			button1.Enabled = false;
		}
		private void richTextBox2_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
		{
			byte[] data;
			if(e.KeyChar == (char)13)
			{
				if(m_bConnected)
				{
					try
					{
						lock(this)
						{
							richTextBox1.Text = "我说:" richTextBox2.Text richTextBox1.Text;
							w.WriteLine(richTextBox2.Text);
							w.Flush();
						}
					}
					catch
					{
						MessageBox.Show("连接断开!!");
					}
				}
				else
				{
					MessageBox.Show("对不起,还没有与对方连接,不能通信!");
				}
				richTextBox2.Text = "";
				richTextBox2.Focus();
			}
		}

客户端代码:

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main()
		{
			Application.Run(new Form1());
		}
		// 定义私有变量。
		public bool m_bConnected = false;
		public Thread t = null;
		public IPEndPoint p = null;
		public Socket s = null;
		public NetworkStream ns = null;
		public TextReader r = null;
		public TextWriter w = null;
		public void ThreadListen()
		{
			string tmp;
			while(m_bConnected)
			{
				try
				{
					tmp = r.ReadLine();
					if(tmp.Length != 0)
					{
						lock(this)
						{
							richTextBox1.Text = "他说:" tmp "\n" richTextBox1.Text;
						}
					}
				}
				catch
				{
					MessageBox.Show("连接断开!!");
				}
			}
			s.Shutdown(SocketShutdown.Both);
			s.Close();
		}
		private void button1_Click(object sender, System.EventArgs e)
		{
			p = new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text));
			s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
			s.Connect(p);
			if(s.Connected)
			{
				ns = new NetworkStream(s);
				r = new StreamReader(ns);
				w = new StreamWriter(ns);
				t = new Thread(new ThreadStart(this.ThreadListen));
				t.Start();
				m_bConnected = true;
				button1.Enabled = false;
			}
		}
		private void richTextBox2_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
		{
			if(e.KeyChar == (char)13)
			{
				if(m_bConnected)
				{
					lock(this)
					{
						try
						{
							richTextBox1.Text = "我说:" richTextBox2.Text richTextBox1.Text;
							w.WriteLine(richTextBox2.Text);
							w.Flush();
						}
						catch
						{
							MessageBox.Show("连接断开!!");
						}
					}
				}
				else
				{
					MessageBox.Show("对不起,还没有与对方连接,不能通信!");
				}
				richTextBox2.Text = "";
				richTextBox2.Focus();
			}
		}

 

标签: Socket 聊天

实例下载地址

<赞>C# 实现 服务器端和客户端Socket通讯,聊天功能实现源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 South_Ward 发表于: 2015-09-01 10:08 55
不错!谢谢楼主...

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警