亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chatclient.cs

?? 基于SOCKET的聊天室
?? CS
?? 第 1 頁 / 共 2 頁
字號:
			this.Controls.Add(this.groupBox1);
			this.Controls.Add(this.label2);
			this.Controls.Add(this.cbPrivate);
			this.Controls.Add(this.lstUsers);
			this.Controls.Add(this.btnSend);
			this.Controls.Add(this.tbSendContent);
			this.Name = "ChatClientForm";
			this.Text = "ChatClient";
			this.Closing += new System.ComponentModel.CancelEventHandler(this.ChatClientForm_Closing);
			this.groupBox1.ResumeLayout(false);
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 應用程序的主入口點。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new ChatClientForm());
		}


		//ServerResponse()方法用于接收從服務器發回的信息,
		//根據不同的命令,執行相應的操作
		private void ServerResponse()
		{
			//定義一個byte數組,用于接收從服務器端發送來的數據,
			//每次所能接收的數據包的最大長度為1024個字節
			byte[] buff=new byte[1024];
			string msg;
			int len;
			try
			{
				if(!Stream.CanRead)
				{
					return;
				}

				stopFlag = false;
				while(!stopFlag)
				{
					//從流中得到數據,并存入到buff字符數組中
					len=Stream.Read(buff,0,buff.Length);

					if (len < 1)
					{
						Thread.Sleep(200);
						continue;
					}
					
					//將字符數組轉化為字符串
					msg=System.Text.Encoding.Default.GetString(buff,0,len);
					msg.Trim();

					string[] tokens=msg.Split(new Char[]{'|'});
					//tokens[0]中保存了命令標志符(LIST或JOIN或QUIT)
					
					if (tokens[0].ToUpper()== "OK")
					{
						//處理響應
						add("命令執行成功");
					}
					else if (tokens[0].ToUpper()== "ERR")
					{
						//命令執行錯誤
						add("命令執行錯誤:" + tokens[1]);
					}
					else if(tokens[0]== "LIST")
					{
						//此時從服務器返回的消息格式:
						//命令標志符(LIST)|用戶名1|用戶名|2...(所有在線用戶名)|
						add("獲得用戶列表");
						//更新在線用戶列表
						lstUsers.Items.Clear();
						for(int i=1;i<tokens.Length-1;i++)
						{
							lstUsers.Items.Add(tokens[i].Trim());
						}
					}
					else if(tokens[0]== "JOIN")
					{
						//此時從服務器返回的消息格式:
						//命令標志符(JOIN)|剛剛登入的用戶名|
						add(tokens[1]+" "+"已經進入了聊天室");
						this.lstUsers.Items.Add(tokens[1]);
						if (this.tbUserName.Text ==tokens[1]) 
						{
							this.state = CONNECTED;
						}
					}
					else if(tokens[0]== "QUIT")
					{
						if (this.lstUsers.Items.IndexOf(tokens[1])>-1)
						{
							this.lstUsers.Items.Remove(tokens[1]);
						}
						add("用戶:" + tokens[1] + " 已經離開");
					}
					else
					{
						//如果從服務器返回的其他消息格式,
						//則在ListBox控件中直接顯示
						add(msg);
					}	
				}
				//關閉連接
				tcpClient.Close();
			}
			catch
			{
				add("網絡發生錯誤");
			}
		}

		private void add(string msg)
		{
			if (!color.IsEmpty)
			{
				this.rtbMsg.SelectionColor = color;
			}
			this.rtbMsg.SelectedText = msg + "\n";
		}

		//當點擊“發送”按鈕時,便會進入btnSend_Click處理程序。
		//在btnSend_Click處理程序中,如果不是私聊,
		//將“CHAT”命令發送給服務器,
		//否則(為私聊),將“PRIV”命令發送給服務器,
		//注意命令格式一定要與服務器端的命令格式一致
		private void btnSend_Click(object sender, System.EventArgs e)
		{
			try
			{
				if(!this.cbPrivate.Checked)
				{
					//此時命令的格式是:
					//命令標志符(CHAT)|發送者的用戶名:發送內容|
					string message="CHAT|"+ this.tbUserName.Text +":"+
						tbSendContent.Text+"|";
					tbSendContent.Text="";
					tbSendContent.Focus();
					//將字符串轉化為字符數組
					Byte[]outbytes=System.Text.Encoding.Default.GetBytes(
						message.ToCharArray());
					Stream.Write(outbytes,0,outbytes.Length);
					
				}
				else
				{
					if(lstUsers.SelectedIndex==-1)
					{
						MessageBox.Show("請在列表中選擇一個用戶","提示信息",
							MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
						return;
					}
					string receiver=lstUsers.SelectedItem.ToString();
					//消息的格式是:
					//命令標志符(PRIV)|發送者的用戶名|接收者的用戶名|發送內容|
					string message="PRIV|"+this.tbUserName.Text+"|"+receiver+"|"+
						tbSendContent.Text+"|";
					tbSendContent.Text="";
					tbSendContent.Focus();
					//將字符串轉化為字符數組
					byte[] outbytes=System.Text.Encoding.ASCII.GetBytes(
						message.ToCharArray());
					Stream.Write(outbytes,0,outbytes.Length);
					
				}
			}
			catch
			{
				this.rtbMsg.AppendText("網絡發生錯誤");
			}

		}


		//連接聊天服務器
		private void btnLogin_Click(object sender, System.EventArgs e)
		{
			if (state == CONNECTED)
			{
				return;
			}

			if(this.tbUserName.Text.Length==0)
			{
				MessageBox.Show("請輸入您的呢稱!","提示信息",
					MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
				this.tbUserName.Focus();
				return;
			}
			try
			{
				//創建一個客戶端套接字,它是Login的一個公共屬性,
				//將被傳遞給ChatClient窗體
				tcpClient=new TcpClient();
				//向指定的IP地址的服務器發出連接請求
				tcpClient.Connect(IPAddress.Parse(txtHost.Text),
					Int32.Parse(txtPort.Text));
				//獲得與服務器數據交互的流通道(NetworkStream)
				Stream=tcpClient.GetStream();

				//啟動一個新的線程,執行方法this.ServerResponse(),
				//以便來響應從服務器發回的信息
				Thread thread=new Thread(new ThreadStart(this.ServerResponse));
				thread.Start();

				//向服務器發送“CONN”請求命令,
				//此命令的格式與服務器端的定義的格式一致,
				//命令格式為:命令標志符(CONN)|發送者的用戶名|
				string cmd="CONN|"+this.tbUserName.Text+"|";
				//將字符串轉化為字符數組
				Byte[] outbytes=System.Text.Encoding.Default.GetBytes(
					cmd.ToCharArray());
				Stream.Write(outbytes,0,outbytes.Length);

			}
			catch(Exception ex)
			{
				MessageBox.Show(ex.Message);
			}

		}

		//設置字體顏色
		private void btnColor_Click(object sender, System.EventArgs e)
		{
			ColorDialog colorDialog1 = new ColorDialog();
			colorDialog1.Color = this.rtbMsg.SelectionColor;

			if(colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK && 
				colorDialog1.Color !=this.rtbMsg.SelectionColor)
			{
				this.rtbMsg.SelectionColor = colorDialog1.Color;
				color = colorDialog1.Color;
			}
		}

		//當單擊“離開”按鈕時,便進入了btnExit_Click 處理程序。
		//在btnExit_Click 處理程序中,
		//將“EXIT”命令發送給服務器,此命令格式要與服務器端的命令格式一致
		private void btnExit_Click_1(object sender, System.EventArgs e)
		{
			if (state == CONNECTED) 
			{
				string message="EXIT|"+this.tbUserName.Text+"|";
				//將字符串轉化為字符數組
				Byte[]outbytes=System.Text.Encoding.Default.GetBytes(
					message.ToCharArray());
				Stream.Write(outbytes,0,outbytes.Length);

				this.state = CLOSED;
				this.stopFlag = true;
				this.lstUsers.Items.Clear();
			}
		}

		private void ChatClientForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
		{
			btnExit_Click_1(sender, e);
		}


	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲国产成人精品一区二区三| 精品国产乱码久久| 欧美一区二区视频观看视频| 中文在线免费一区三区高中清不卡| 亚洲精品国产第一综合99久久 | 久久99久久99小草精品免视看| av电影在线观看不卡| 精品入口麻豆88视频| 一区二区三区四区国产精品| 国产成人综合自拍| 日韩欧美电影一区| 亚洲自拍偷拍网站| 99久久精品国产观看| 久久久亚洲欧洲日产国码αv| 亚洲国产精品视频| 91小宝寻花一区二区三区| 久久久影院官网| 免费观看日韩电影| 欧美日韩中文字幕一区| 亚洲欧美日韩成人高清在线一区| 国产精品一品视频| 26uuu亚洲综合色| 日本va欧美va瓶| 欧美日韩在线不卡| 亚洲午夜电影在线| 在线亚洲人成电影网站色www| 国产亚洲欧美激情| 成人性生交大片免费看视频在线| 欧美精品一区二区三区视频| 琪琪一区二区三区| 欧美一级久久久| 美国十次了思思久久精品导航| 欧美精品一卡二卡| 盗摄精品av一区二区三区| 2021国产精品久久精品| 免费精品视频最新在线| 日韩一二三四区| 老司机午夜精品99久久| 精品久久久久一区| 国产成人三级在线观看| 国产精品私房写真福利视频| 成人午夜激情影院| 一区二区三区自拍| 欧美另类高清zo欧美| 久久精品99久久久| 久久亚洲私人国产精品va媚药| 国产精品系列在线观看| 国产精品不卡一区二区三区| 91免费观看国产| 亚洲国产成人精品视频| 日韩一区二区在线播放| 国精产品一区一区三区mba视频| 国产日韩欧美综合一区| 99精品偷自拍| 午夜电影一区二区三区| 精品免费视频.| 国产91精品露脸国语对白| 亚洲伦理在线精品| 69p69国产精品| 日韩电影免费在线看| 久久综合一区二区| 99热在这里有精品免费| 亚洲国产综合人成综合网站| 日韩一级大片在线| 国产.欧美.日韩| 亚洲成人av电影在线| 久久这里只有精品首页| 国产宾馆实践打屁股91| 一区二区三区四区乱视频| 亚洲综合精品自拍| 久久午夜电影网| 欧美日韩激情一区| 国产精品一区在线观看乱码| 亚洲已满18点击进入久久| 欧美刺激脚交jootjob| 99久久精品国产毛片| 蜜臀久久99精品久久久画质超高清| 国产精品乱子久久久久| 日韩一区二区电影网| av一区二区三区| 久久国产生活片100| 亚洲免费在线观看| 久久久精品国产免大香伊| 在线观看视频一区二区 | 久久综合狠狠综合久久综合88| av综合在线播放| 韩国视频一区二区| 亚洲永久免费av| 国产精品久久久久桃色tv| 91精品国产综合久久久蜜臀粉嫩| 成人18视频日本| 国内精品自线一区二区三区视频| 国产福利精品一区| 午夜精品久久久久久久99樱桃| 欧美激情一区二区三区不卡| 日韩三级中文字幕| 欧美午夜视频网站| 白白色 亚洲乱淫| 国产一区二区三区视频在线播放| 亚洲电影视频在线| 亚洲人成人一区二区在线观看| 精品国产免费人成在线观看| 欧美美女直播网站| 91麻豆精品视频| 成人性生交大片免费看中文| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩国产片| 日本乱人伦一区| 成人手机电影网| 国产精品自拍三区| 久久精品国产亚洲一区二区三区| 午夜av一区二区| 亚洲综合图片区| 一区二区三区四区蜜桃| ...av二区三区久久精品| 国产精品久久久久久亚洲毛片| 国产调教视频一区| 欧美mv日韩mv国产网站| 日韩一区和二区| 欧美大肚乱孕交hd孕妇| 欧美一级日韩免费不卡| 欧美一区三区二区| 欧美一区中文字幕| 欧美一区二区视频在线观看2022| 欧美片在线播放| 日韩欧美一级精品久久| 日韩一级二级三级精品视频| 日韩女优av电影在线观看| 日韩一区二区三区四区五区六区| 欧美一区二区三区爱爱| 日韩欧美的一区| 国产欧美一区视频| 亚洲欧洲色图综合| 亚洲成人av资源| 精品夜夜嗨av一区二区三区| 国产精品一区一区| 99久久免费精品高清特色大片| 91欧美激情一区二区三区成人| 色就色 综合激情| 91精品婷婷国产综合久久| 日韩欧美中文字幕一区| 日本一区免费视频| 亚洲综合免费观看高清在线观看| 亚洲成av人片一区二区梦乃| 蜜臀久久99精品久久久久宅男| 国产乱码精品一区二区三区忘忧草| www.亚洲在线| 欧美日韩日日摸| 久久久久久免费网| 夜夜嗨av一区二区三区| 奇米亚洲午夜久久精品| 成人免费电影视频| 欧美性感一类影片在线播放| 欧美一区二区免费| 中文字幕日韩欧美一区二区三区| 亚洲一区二区不卡免费| 精品无码三级在线观看视频| 91免费小视频| 精品国产免费视频| 亚洲综合一二区| 国产91在线观看丝袜| 欧美乱熟臀69xxxxxx| 欧美韩国日本不卡| 日本不卡1234视频| 91色婷婷久久久久合中文| 日韩欧美高清在线| 亚洲精品国产a久久久久久| 国产一区二区三区香蕉| 欧美日韩一区二区三区四区五区| 精品成人一区二区| 婷婷丁香激情综合| av动漫一区二区| 精品国产乱码久久久久久浪潮| 综合久久久久综合| 国产成人综合自拍| 日韩一区二区免费在线电影| 亚洲欧美电影一区二区| 国产精品88av| 日韩欧美在线123| 亚洲第一狼人社区| 97精品国产露脸对白| 国产亚洲美州欧州综合国| 青青国产91久久久久久| 一本到一区二区三区| 国产精品青草综合久久久久99| 另类小说视频一区二区| 欧美日韩欧美一区二区| 亚洲精品成a人| 成人av在线资源网站| 国产女同互慰高潮91漫画| 国产乱码精品一区二区三| 日韩一区二区精品葵司在线| 图片区小说区区亚洲影院| 欧美性感一类影片在线播放| 自拍视频在线观看一区二区| 不卡av在线免费观看| 国产精品网曝门| 福利电影一区二区| 中文字幕久久午夜不卡| 国产精品一区二区在线观看网站|