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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? chatserver.cs

?? 基于SOCKET的聊天室
?? CS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
				}
				catch(Exception ex)
				{
					this.rtbSocketMsg.AppendText(ex.Message.ToString()+ "\n");
				}
			}
		}

		private void tbSocketPort_TextChanged(object sender, System.EventArgs e)
		{
			this.btnSocketStart.Enabled = (this.tbSocketPort.Text != "");
		}


		private void btnSocketStop_Click(object sender, System.EventArgs e)
		{
			ClientSeverForm.SocketServiceFlag = false;
			this.btnSocketStart.Enabled = true;
			this.btnSocketStop.Enabled = false;
		}
		
		public void addUser(string username)
		{
			this.rtbSocketMsg.AppendText(username + " 已經(jīng)加入\n");
		    //將剛連接的用戶名加入到當(dāng)前在線用戶列表中
			this.lbSocketClients.Items.Add(username);
			this.tbSocketClientsNum.Text = System.Convert.ToString(clients.Count);
		}

		public void removeUser(string username)
		{
			this.rtbSocketMsg.AppendText(username + " 已經(jīng)離開(kāi)\n");
			//將剛連接的用戶名加入到當(dāng)前在線用戶列表中
			this.lbSocketClients.Items.Remove(username);
			this.tbSocketClientsNum.Text = System.Convert.ToString(clients.Count);
		}
		
		public string GetUserList()
		{
			string Rtn="";
			for(int i=0;i<lbSocketClients.Items.Count;i++)
			{
				Rtn=Rtn+lbSocketClients.Items[i].ToString() + "|";
			}
			return Rtn;
		}

		public void updateUI(string msg)
		{
			this.rtbSocketMsg.AppendText(msg + "\n");
		}

		private void ClientSeverForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
		{
			ClientSeverForm.SocketServiceFlag = false;
		}
		
	}


	public class Client
	{
		private string name;
		private Socket currentSocket = null;
		private string ipAddress;
		private ClientSeverForm server;
		
		//保留當(dāng)前連接的狀態(tài):
		//closed --> connected --> closed
		private string state = "closed";
		
		public Client(ClientSeverForm server, Socket clientSocket)
		{
			this.server = server;
			this.currentSocket = clientSocket;
			ipAddress = getRemoteIPAddress();
		}
		
		public string Name
		{
			get
			{
				return name;
			}
			set
			{
				name=value;
			}
		}
		public  Socket CurrentSocket
		{
			get
			{
				return currentSocket;
			}
			set
			{
				currentSocket=value;
			}
		}
		
		public  string IpAddress
		{
			get
			{
				return ipAddress;
			}
		}
		
		private string getRemoteIPAddress()
		{
			return ((IPEndPoint)currentSocket.RemoteEndPoint).
					Address.ToString();
		}

		//ServiceClient方法用于和客戶端進(jìn)行數(shù)據(jù)通信,包括接收客戶端的請(qǐng)求,
		//根據(jù)不同的請(qǐng)求命令,執(zhí)行相應(yīng)的操作,并將處理結(jié)果返回到客戶端
		public void ServiceClient()
		{
			string[] tokens=null;
			byte[] buff=new byte[1024];
			bool keepConnect=true;
			
			//用循環(huán)來(lái)不斷地與客戶端進(jìn)行交互,直到客戶端發(fā)出“EXIT”命令,
			//將keepConnect置為false,退出循環(huán),關(guān)閉連接,并中止當(dāng)前線程
			while(keepConnect && ClientSeverForm.SocketServiceFlag)
			{
				tokens = null;
				try
				{
					if (currentSocket == null ||
						currentSocket.Available < 1)
					{
						Thread.Sleep(300);
						continue;
					}

					//接收數(shù)據(jù)并存入buff數(shù)組中
					int len = currentSocket.Receive(buff);
					//將字符數(shù)組轉(zhuǎn)化為字符串
					string clientCommand=System.Text.Encoding.Default.GetString(
						                                 buff, 0, len);
				
					//tokens[0]中保存了命令標(biāo)志符(CONN、CHAT、PRIV、LIST或EXIT)
					tokens=clientCommand.Split(new Char[]{'|'});

					if (tokens == null) 
					{
						Thread.Sleep(200);
						continue;
					}
				} 
				catch(Exception e)
				{
					server.updateUI("發(fā)生異常:"+ e.ToString());
				}
			

				if(tokens[0]=="CONN")
				{
					//此時(shí)接收到的命令格式為:
					//命令標(biāo)志符(CONN)|發(fā)送者的用戶名|,
					//tokens[1]中保存了發(fā)送者的用戶名
					this.name = tokens[1];
					if (ClientSeverForm.clients.Contains(this.name))
					{
						SendToClient(this, "ERR|User " + this.name + " 已經(jīng)存在");

					}
					else
					{
						Hashtable syncClients = Hashtable.Synchronized(
							ClientSeverForm.clients);
						syncClients.Add(this.name,this);

						//更新界面
						server.addUser(this.name);

					
						//對(duì)每一個(gè)當(dāng)前在線的用戶發(fā)送JOIN消息命令和LIST消息命令,
						//以此來(lái)更新客戶端的當(dāng)前在線用戶列表
						System.Collections.IEnumerator myEnumerator = 
							ClientSeverForm.clients.Values.GetEnumerator();
						while (myEnumerator.MoveNext())
						{
							Client client = (Client)myEnumerator.Current;
							SendToClient(client, "JOIN|"+tokens[1]+"|");
							Thread.Sleep(100);
						}
						//更新?tīng)顟B(tài)
						state = "connected";	
						SendToClient(this, "ok");	

						//向客戶端發(fā)送LIST命令,以此更新客戶端的當(dāng)前在線用戶列表
						string msgUsers="LIST|"+server.GetUserList();
						SendToClient(this, msgUsers);
					}

				}
				else if(tokens[0]=="LIST")
				{
					if (state == "connnected")
					{
						//向客戶端發(fā)送LIST命令,以此更新客戶端的當(dāng)前在線用戶列表
						string msgUsers="LIST|"+server.GetUserList();
						SendToClient(this, msgUsers);
					}
					else
					{
						//send err to server
						SendToClient(this, "ERR|state error,Please login first");
					}
				}
				else if(tokens[0]=="CHAT")
				{
					if (state == "connected")
					{
						//此時(shí)接收到的命令的格式為:
						//命令標(biāo)志符(CHAT)|發(fā)送者的用戶名:發(fā)送內(nèi)容|
						//向所有當(dāng)前在線的用戶轉(zhuǎn)發(fā)此信息
						System.Collections.IEnumerator myEnumerator = 
							ClientSeverForm.clients.Values.GetEnumerator();
						while (myEnumerator.MoveNext())
						{
							Client client = (Client)myEnumerator.Current;
							//將“發(fā)送者的用戶名:發(fā)送內(nèi)容”轉(zhuǎn)發(fā)給用戶
							SendToClient(client, tokens[1]);
						}
						server.updateUI(tokens[1]);
					}
					else
					{
						//send err to server
						SendToClient(this, "ERR|state error,Please login first");
					}
				}
				else if(tokens[0]=="PRIV")
				{
					if (state == "connected")
					{
						//此時(shí)接收到的命令格式為:
						//命令標(biāo)志符(PRIV)|發(fā)送者用戶名|接收者用戶名|發(fā)送內(nèi)容|
						//tokens[1]中保存了發(fā)送者的用戶名
						string sender=tokens[1];
						//tokens[2]中保存了接收者的用戶名
						string receiver=tokens[2];
						//tokens[3]中保存了發(fā)送的內(nèi)容
						string content=tokens[3];
						string message=sender+" ---> "+receiver+":  " + content;
						
						//僅將信息轉(zhuǎn)發(fā)給發(fā)送者和接收者
						if (ClientSeverForm.clients.Contains(sender))
						{
							SendToClient(
								(Client)ClientSeverForm.clients[sender], message);
						}
						if (ClientSeverForm.clients.Contains(receiver))
						{
							SendToClient(
								(Client)ClientSeverForm.clients[receiver], message);
						}
						server.updateUI(message);
					}
					else
					{
						//send err to server
						SendToClient(this, "ERR|state error,Please login first");
					}
				}
				else if(tokens[0]=="EXIT")
				{
					//此時(shí)接收到的命令的格式為:命令標(biāo)志符(EXIT)|發(fā)送者的用戶名
					//向所有當(dāng)前在線的用戶發(fā)送該用戶已離開(kāi)的信息
					if (ClientSeverForm.clients.Contains(tokens[1]))
					{
						Client client = (Client)ClientSeverForm.clients[tokens[1]];

						//將該用戶對(duì)應(yīng)的Client對(duì)象從clients中刪除
						Hashtable syncClients = Hashtable.Synchronized(
							ClientSeverForm.clients);
						syncClients.Remove(client.name);
						server.removeUser(client.name);

						//向客戶端發(fā)送QUIT命令
						string message="QUIT|" + tokens[1];
							
						System.Collections.IEnumerator myEnumerator = 
							ClientSeverForm.clients.Values.GetEnumerator();
						while (myEnumerator.MoveNext())
						{
							Client c = (Client)myEnumerator.Current;
							SendToClient(c, message);
						}
						server.updateUI("QUIT");
					}

					//退出當(dāng)前線程
					break;
				}
				Thread.Sleep(200);
			}
		}
		
		//SendToClient()方法實(shí)現(xiàn)了向客戶端發(fā)送命令請(qǐng)求的功能
		private void SendToClient(Client client, string msg)
		{
			System.Byte[] message=System.Text.Encoding.Default.GetBytes(
					msg.ToCharArray());
			client.CurrentSocket.Send(message,message.Length,0);
		}			
				
	}
		
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品区一区二区| 国产乱码一区二区三区| 91精品国产入口| 国产一区二区三区黄视频| 国产精品久久毛片av大全日韩| 99re热视频精品| 免费在线观看日韩欧美| 国产精品天美传媒沈樵| 欧美日韩情趣电影| 成人激情综合网站| 蜜桃久久久久久| 国产精品国产三级国产普通话99 | 国产亚洲成aⅴ人片在线观看| 成人av网址在线观看| 日韩福利视频导航| 亚洲婷婷综合久久一本伊一区| 777久久久精品| 一本色道久久综合狠狠躁的推荐| 久久精品久久久精品美女| 亚洲婷婷在线视频| 久久久久久久精| 69堂成人精品免费视频| 99精品在线免费| 韩国v欧美v亚洲v日本v| 午夜精品一区在线观看| 国产精品久久久久四虎| 精品区一区二区| 欧美精品国产精品| 日本高清不卡视频| 成人在线视频一区| 国产呦萝稀缺另类资源| 日韩高清不卡一区二区三区| 亚洲精品老司机| 国产精品区一区二区三| 精品成人一区二区三区| 91精品国产全国免费观看| 色999日韩国产欧美一区二区| 国产91在线看| 国产一区在线看| 久久精品免费观看| 青娱乐精品视频在线| 国产精品中文欧美| 久久aⅴ国产欧美74aaa| 日韩精品1区2区3区| 亚洲综合色视频| 一区二区在线看| 亚洲婷婷综合色高清在线| 国产精品理伦片| 国产精品久久精品日日| 中文字幕+乱码+中文字幕一区| 2023国产精华国产精品| 日韩精品中文字幕在线不卡尤物| 欧美精品丝袜中出| 欧美精选在线播放| 在线成人小视频| 69堂精品视频| 精品国产免费久久| 久久夜色精品国产噜噜av| 精品精品国产高清a毛片牛牛| 91精品国产黑色紧身裤美女| 欧美丰满少妇xxxbbb| 欧美日韩1区2区| 日韩一区二区三区av| 日韩一级二级三级精品视频| 日韩欧美高清一区| 久久久久久日产精品| 日本一区二区综合亚洲| 国产精品福利在线播放| 亚洲欧美一区二区在线观看| 亚洲图片另类小说| 亚洲线精品一区二区三区| 亚洲曰韩产成在线| 日本视频一区二区三区| 激情五月激情综合网| 国产成人亚洲综合色影视| 成人午夜av在线| 一本在线高清不卡dvd| 欧美私人免费视频| 日韩欧美中文字幕制服| 国产午夜精品一区二区| 中文字幕欧美一| 亚洲国产一区视频| 麻豆91精品视频| 波多野结衣中文一区| 91福利视频在线| 日韩欧美国产综合| 国产精品无人区| 亚洲国产成人av| 精品一区二区三区在线播放视频| 国产v综合v亚洲欧| 在线免费av一区| www激情久久| 综合精品久久久| 日本美女一区二区三区视频| 国产在线不卡一区| 色综合久久综合| 日韩一区二区三区在线| 国产精品欧美综合在线| 亚洲国产日韩在线一区模特| 韩国欧美国产一区| 色噜噜狠狠色综合中国| 日韩欧美电影一区| 亚洲少妇30p| 精品影视av免费| 在线亚洲高清视频| ww亚洲ww在线观看国产| 亚洲一区二区在线免费观看视频 | 久久网站最新地址| 亚洲综合激情网| 国产成人精品免费视频网站| 欧美少妇bbb| 中文字幕乱码日本亚洲一区二区 | 狠狠色综合播放一区二区| 99riav久久精品riav| 日韩精品资源二区在线| 亚洲九九爱视频| 国产裸体歌舞团一区二区| 欧美日韩久久久| 国产精品无码永久免费888| 男女男精品视频| 在线视频国内自拍亚洲视频| 久久一日本道色综合| 亚洲成人激情综合网| 9色porny自拍视频一区二区| 亚洲精品一区二区三区蜜桃下载 | 国产精品久久久久毛片软件| 老司机免费视频一区二区三区| 色哟哟国产精品免费观看| 久久网站热最新地址| 日韩高清不卡在线| 欧美日韩色一区| 亚洲欧美日韩成人高清在线一区| 韩国欧美国产1区| 777午夜精品视频在线播放| 亚洲欧洲一区二区三区| 国产成人综合网| 久久久精品日韩欧美| 蜜桃av噜噜一区| 欧美精品久久一区| 一区二区三区中文字幕精品精品| 成人免费视频视频在线观看免费| 精品国产电影一区二区| 另类小说综合欧美亚洲| 欧美一卡2卡3卡4卡| 天堂在线一区二区| 欧美亚洲自拍偷拍| 一区二区三区四区五区视频在线观看 | 精品国产一区久久| 美女精品自拍一二三四| 欧美一区二区三区婷婷月色| 亚洲成人综合视频| 欧美日韩国产一级片| 亚洲电影你懂得| 欧美日韩大陆在线| 视频一区欧美日韩| 666欧美在线视频| 男女男精品视频| 精品国产一区二区三区四区四| 久久精品国产久精国产爱| 日韩一级二级三级精品视频| 美美哒免费高清在线观看视频一区二区| 欧美精品久久久久久久久老牛影院| 丝袜诱惑制服诱惑色一区在线观看 | 日韩av成人高清| 日韩欧美一区二区视频| 激情另类小说区图片区视频区| 26uuu国产电影一区二区| 国产精品99久久久久久久女警 | 欧美日韩精品一区二区三区| 首页国产欧美日韩丝袜| 日韩一区二区三区免费看| 精品中文字幕一区二区| 久久精品一区二区三区四区| 大胆亚洲人体视频| 亚洲女性喷水在线观看一区| 欧美午夜精品免费| 男人的j进女人的j一区| 久久久久久久综合日本| 成人一级视频在线观看| 亚洲黄色片在线观看| 欧美美女黄视频| 国产精品18久久久久久久久| 国产精品女同一区二区三区| 一本色道a无线码一区v| 肉色丝袜一区二区| 国产亚洲精品免费| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲福利视频一区二区| 欧美va在线播放| 99久久精品国产导航| 午夜精品aaa| 国产亚洲欧美激情| 欧美日韩免费观看一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 欧美激情一区二区三区四区| 欧美亚洲图片小说| 国产乱码精品1区2区3区| 一区二区三区在线观看网站| 精品少妇一区二区三区| 91在线你懂得|