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

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

?? chatserver.cs

?? 基于SOCKET的聊天室
?? CS
?? 第 1 頁 / 共 2 頁
字號:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;


namespace ChatServer
{
	public class ClientSeverForm : System.Windows.Forms.Form
	{
		/// <summary>
		/// 必需的設計器變量。
		/// </summary>
		private System.ComponentModel.Container components = null;
		
		private System.Windows.Forms.GroupBox grpSocket;
		private System.Windows.Forms.Label label1;
		private System.Windows.Forms.Label label3;
		private System.Windows.Forms.TextBox tbSocketPort;
		private System.Windows.Forms.TextBox tbSocketClientsNum;
		private System.Windows.Forms.RichTextBox rtbSocketMsg;
		private System.Windows.Forms.Button btnSocketStart;
		private System.Windows.Forms.Button btnSocketStop;
		private System.Windows.Forms.ListBox lbSocketClients;

		//clients數組保存當前在線用戶的Client對象
		internal static Hashtable clients=new Hashtable();
		
		//該服務器默認的監聽的端口號
		private TcpListener listener;
		
		//服務器可以支持的最多的客戶端的連接數
		static int MAX_NUM=100;
		
		//開始服務的標志
		internal static bool SocketServiceFlag = false;

		public ClientSeverForm()
		{
			//
			// Windows 窗體設計器支持所必需的
			//
			InitializeComponent();

			//
			// TODO: 在 InitializeComponent 調用后添加任何構造函數代碼
			//
		}

		/// <summary>
		/// 清理所有正在使用的資源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(ClientSeverForm));
			this.grpSocket = new System.Windows.Forms.GroupBox();
			this.lbSocketClients = new System.Windows.Forms.ListBox();
			this.btnSocketStop = new System.Windows.Forms.Button();
			this.rtbSocketMsg = new System.Windows.Forms.RichTextBox();
			this.btnSocketStart = new System.Windows.Forms.Button();
			this.tbSocketPort = new System.Windows.Forms.TextBox();
			this.label1 = new System.Windows.Forms.Label();
			this.tbSocketClientsNum = new System.Windows.Forms.TextBox();
			this.label3 = new System.Windows.Forms.Label();
			this.grpSocket.SuspendLayout();
			this.SuspendLayout();
			// 
			// grpSocket
			// 
			this.grpSocket.Controls.Add(this.lbSocketClients);
			this.grpSocket.Controls.Add(this.btnSocketStop);
			this.grpSocket.Controls.Add(this.rtbSocketMsg);
			this.grpSocket.Controls.Add(this.btnSocketStart);
			this.grpSocket.Controls.Add(this.tbSocketPort);
			this.grpSocket.Controls.Add(this.label1);
			this.grpSocket.Controls.Add(this.tbSocketClientsNum);
			this.grpSocket.Controls.Add(this.label3);
			this.grpSocket.Location = new System.Drawing.Point(16, 16);
			this.grpSocket.Name = "grpSocket";
			this.grpSocket.Size = new System.Drawing.Size(784, 368);
			this.grpSocket.TabIndex = 13;
			this.grpSocket.TabStop = false;
			this.grpSocket.Text = "Socket連接監聽";
			// 
			// lbSocketClients
			// 
			this.lbSocketClients.Location = new System.Drawing.Point(8, 64);
			this.lbSocketClients.Name = "lbSocketClients";
			this.lbSocketClients.ScrollAlwaysVisible = true;
			this.lbSocketClients.Size = new System.Drawing.Size(200, 290);
			this.lbSocketClients.TabIndex = 21;
			// 
			// btnSocketStop
			// 
			this.btnSocketStop.Enabled = false;
			this.btnSocketStop.Location = new System.Drawing.Point(528, 32);
			this.btnSocketStop.Name = "btnSocketStop";
			this.btnSocketStop.Size = new System.Drawing.Size(88, 24);
			this.btnSocketStop.TabIndex = 20;
			this.btnSocketStop.Text = "Socket停止";
			this.btnSocketStop.Click += new System.EventHandler(this.btnSocketStop_Click);
			// 
			// rtbSocketMsg
			// 
			this.rtbSocketMsg.Location = new System.Drawing.Point(216, 64);
			this.rtbSocketMsg.Name = "rtbSocketMsg";
			this.rtbSocketMsg.Size = new System.Drawing.Size(552, 296);
			this.rtbSocketMsg.TabIndex = 19;
			this.rtbSocketMsg.Text = "";
			// 
			// btnSocketStart
			// 
			this.btnSocketStart.Location = new System.Drawing.Point(424, 32);
			this.btnSocketStart.Name = "btnSocketStart";
			this.btnSocketStart.Size = new System.Drawing.Size(88, 24);
			this.btnSocketStart.TabIndex = 18;
			this.btnSocketStart.Text = "Socket啟動";
			this.btnSocketStart.Click += new System.EventHandler(this.btnSocketStart_Click);
			// 
			// tbSocketPort
			// 
			this.tbSocketPort.Location = new System.Drawing.Point(328, 32);
			this.tbSocketPort.Name = "tbSocketPort";
			this.tbSocketPort.Size = new System.Drawing.Size(83, 20);
			this.tbSocketPort.TabIndex = 17;
			this.tbSocketPort.Text = "1234";
			this.tbSocketPort.TextChanged += new System.EventHandler(this.tbSocketPort_TextChanged);
			// 
			// label1
			// 
			this.label1.Location = new System.Drawing.Point(232, 31);
			this.label1.Name = "label1";
			this.label1.Size = new System.Drawing.Size(96, 21);
			this.label1.TabIndex = 16;
			this.label1.Text = "Socket端口號:";
			this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
			// 
			// tbSocketClientsNum
			// 
			this.tbSocketClientsNum.Location = new System.Drawing.Point(112, 32);
			this.tbSocketClientsNum.Name = "tbSocketClientsNum";
			this.tbSocketClientsNum.ReadOnly = true;
			this.tbSocketClientsNum.TabIndex = 15;
			this.tbSocketClientsNum.Text = "";
			// 
			// label3
			// 
			this.label3.Location = new System.Drawing.Point(16, 36);
			this.label3.Name = "label3";
			this.label3.Size = new System.Drawing.Size(97, 16);
			this.label3.TabIndex = 13;
			this.label3.Text = "當前在線用戶:";
			// 
			// ClientSeverForm
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(818, 407);
			this.Controls.Add(this.grpSocket);
			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
			this.MinimizeBox = false;
			this.Name = "ClientSeverForm";
			this.Text = "聊天室服務器";
			this.Closing += new System.ComponentModel.CancelEventHandler(this.ClientSeverForm_Closing);
			this.grpSocket.ResumeLayout(false);
			this.ResumeLayout(false);

		}
		#endregion

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

		private string getIPAddress()
		{
			// 獲得本機局域網IP地址
			IPAddress[] AddressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
			if (AddressList.Length<1)
			{
				return "";
			}
			
			return AddressList[0].ToString();
		} 

		private static string getDynamicIPAddress( )
		{
			// 獲得撥號動態分配IP地址
			IPAddress[] AddressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
			if (AddressList.Length<2)
			{
				return "";
			}
			
			return AddressList[1].ToString();
		}

		private int getValidPort(string port)
		{
			int lport;

			//測試端口號是否有效
			try
			{
				//是否為空
				if (port=="") 
				{
					throw new ArgumentException(
						"端口號為空,不能啟動服務器");
				}
				lport = System.Convert.ToInt32(port);
			}
			catch (Exception e)
			{
				//ArgumentException, 
				//FormatException, 
				//OverflowException
				Console.WriteLine("無效的端口號:" + e.ToString());
				this.rtbSocketMsg.AppendText("無效的端口號:" + e.ToString()+"\n");
				return -1;
			}
			return lport;
		}

		//當單擊“Socket啟動”按鈕時,便開始監聽指定的Socket端口
		private void btnSocketStart_Click(object sender, System.EventArgs e)
		{
			int port = getValidPort(tbSocketPort.Text);
			if (port<0)
			{
				return;
			}

			string ip = this.getIPAddress();
			try
			{
				IPAddress ipAdd=IPAddress.Parse(ip);
				//創建服務器套接字
				listener=new TcpListener(ipAdd, port);
				//開始監聽服務器端口
				listener.Start();
				this.rtbSocketMsg.AppendText("Socket服務器已經啟動,正在監聽" + 
					ip + " 端口號:" + this.tbSocketPort.Text + "\n");

				//啟動一個新的線程,執行方法this.StartSocketListen,
				//以便在一個獨立的進程中執行確認與客戶端Socket連接的操作
				ClientSeverForm.SocketServiceFlag = true;
				Thread thread=new Thread(new ThreadStart(this.StartSocketListen));
				thread.Start();
				this.btnSocketStart.Enabled = false;
				this.btnSocketStop.Enabled = true;
			}
			catch(Exception ex)
			{
				this.rtbSocketMsg.AppendText(ex.Message.ToString()+"\n");
			}		
		}

		//在新的線程中的操作,它主要用于當接收到一個客戶端請求時,確認與客戶端的連接,
		//并且立刻啟動一個新的線程來處理和該客戶端的信息交互。
		private void StartSocketListen()
		{
			while(ClientSeverForm.SocketServiceFlag)
			{
				try
				{
					//當接收到一個客戶端請求時,確認與客戶端的連接
					if (listener.Pending())
					{
						Socket socket=listener.AcceptSocket();
						if(clients.Count>=MAX_NUM)
						{
							this.rtbSocketMsg.AppendText("已經達到了最大連接數:" + 
								MAX_NUM + ",拒絕新的連接\n");
							socket.Close();
						}
						else
						{
							//啟動一個新的線程,
							//執行方法this.ServiceClient,處理用戶相應的請求
							Client client = new Client(this, socket);
							Thread clientService=new Thread(
								new ThreadStart(client.ServiceClient));
							clientService.Start();
						}
					}
					Thread.Sleep(200);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美tickling网站挠脚心| 91精品国产麻豆国产自产在线| 99久久免费精品| 777奇米四色成人影色区| 国产午夜久久久久| 天涯成人国产亚洲精品一区av| 国产传媒欧美日韩成人| 欧美日韩精品一区二区三区| 国产精品丝袜在线| 麻豆精品一二三| 欧美吻胸吃奶大尺度电影| 久久久国产午夜精品| 大尺度一区二区| 91精品国产入口| 亚洲妇熟xx妇色黄| 福利视频网站一区二区三区| 国模少妇一区二区三区| 欧美日韩午夜在线| 一区二区三区四区中文字幕| 国产91在线|亚洲| 精品久久久久av影院| 奇米综合一区二区三区精品视频 | 精品毛片乱码1区2区3区| 一区二区三区四区国产精品| 成人免费视频一区| 国产日韩v精品一区二区| 美女视频第一区二区三区免费观看网站| 色婷婷综合中文久久一本| 国产精品高潮呻吟| 成人av在线资源网| 日本一区二区免费在线观看视频| 激情久久久久久久久久久久久久久久| 欧美一区二区三级| 蜜桃精品视频在线观看| 91精品国产一区二区三区| 五月天激情小说综合| 久久综合九色欧美综合狠狠| 亚洲免费观看在线观看| 91片黄在线观看| 亚洲欧美日韩系列| 色欧美乱欧美15图片| 久久国产精品99久久久久久老狼| 欧美三级中文字| 调教+趴+乳夹+国产+精品| 欧美一级高清大全免费观看| 久久精品国产免费| 久久精品一区四区| 99久久99精品久久久久久| 亚洲美女免费视频| 欧美精品久久久久久久多人混战| 青青青爽久久午夜综合久久午夜| 日韩欧美国产高清| 成人国产精品免费网站| 亚洲精品乱码久久久久久日本蜜臀| 欧美影视一区在线| 久久国产剧场电影| 国产欧美在线观看一区| 色8久久人人97超碰香蕉987| 亚洲一区在线视频| 欧美大片顶级少妇| 成人av网站免费观看| 亚洲一区二区四区蜜桃| 日韩午夜中文字幕| av在线播放不卡| 无码av免费一区二区三区试看| 日韩视频国产视频| 99精品欧美一区二区蜜桃免费| 午夜不卡av免费| 国产午夜精品福利| 欧美日韩一区二区三区四区| 国产精品资源网| 亚洲成人黄色影院| 国产三级欧美三级日产三级99| 91久久精品国产91性色tv| 久久国产乱子精品免费女| 中文幕一区二区三区久久蜜桃| 欧美精品 国产精品| 成人动漫视频在线| 裸体一区二区三区| 亚洲精品五月天| 久久奇米777| 欧美精品自拍偷拍| 一本一本大道香蕉久在线精品 | 精品国产污污免费网站入口 | 免费成人你懂的| 成人免费小视频| 精品国产91久久久久久久妲己 | 亚洲精品一二三| 国产日韩欧美不卡| 欧美一级高清片| 欧美视频在线播放| av不卡在线播放| 国产一区福利在线| 热久久国产精品| 亚洲一区在线观看视频| 国产精品国模大尺度视频| 欧美成人女星排行榜| 欧美精品tushy高清| 欧美在线观看视频在线| 成人激情电影免费在线观看| 精品一区二区三区不卡| 天天综合网天天综合色| 一区二区三区四区在线播放| 国产精品你懂的| 国产欧美一区二区在线观看| 亚洲精品一区二区三区影院 | 天天色综合天天| 一区二区国产视频| 亚洲精品网站在线观看| 国产精品护士白丝一区av| 国产欧美日韩综合精品一区二区| 精品国产人成亚洲区| 日韩欧美第一区| 日韩欧美高清一区| 亚洲精品在线观看视频| 欧美成人一级视频| 久久综合精品国产一区二区三区| 日韩精品综合一本久道在线视频| 欧美一级搡bbbb搡bbbb| 欧美一区欧美二区| 精品国产一区二区三区久久影院| 精品国产一二三区| 国产欧美日韩在线视频| 中文在线一区二区 | 亚洲激情av在线| 伊人夜夜躁av伊人久久| 亚洲福利视频三区| 日韩高清不卡一区| 激情综合色播激情啊| 国产成人在线视频播放| 91香蕉国产在线观看软件| 日本高清不卡一区| 91精品国产免费| 国产亚洲成年网址在线观看| 国产精品久久久久久妇女6080 | 色视频欧美一区二区三区| 欧洲精品视频在线观看| 91精品国产乱码久久蜜臀| 亚洲精品一区在线观看| 国产精品免费视频观看| 亚洲综合小说图片| 美女视频第一区二区三区免费观看网站| 精品在线免费观看| av电影在线观看不卡| 欧美高清精品3d| 久久精品男人的天堂| 亚洲精选视频在线| 免费在线观看不卡| 不卡av在线免费观看| 精品视频色一区| 26uuu欧美| 亚洲一区在线播放| 国产乱一区二区| 在线亚洲免费视频| 亚洲精品在线网站| 一区二区三区在线视频观看58| 日本欧美一区二区在线观看| 国产91对白在线观看九色| 欧美午夜影院一区| 欧美国产日韩一二三区| 天堂在线一区二区| 99国产精品久久久久| 精品入口麻豆88视频| 国产亚洲综合av| 美女在线视频一区| youjizz久久| 91精品国产丝袜白色高跟鞋| 亚洲国产成人自拍| 日韩不卡一二三区| 91丨porny丨户外露出| 欧美精品一区在线观看| 亚洲国产欧美一区二区三区丁香婷| 国产精品一区二区在线播放 | 91国偷自产一区二区使用方法| 日韩一级黄色片| 一区二区三区日韩精品视频| 国产91精品精华液一区二区三区| 3atv一区二区三区| 亚洲国产中文字幕在线视频综合| 国产成人av电影| 欧美精品一区二区三区蜜臀| 亚洲图片自拍偷拍| 一本高清dvd不卡在线观看| 中文成人综合网| 国产精品一区久久久久| 精品欧美黑人一区二区三区| 天天综合网 天天综合色| 欧美在线小视频| 亚洲综合色在线| 不卡av在线网| 欧美韩日一区二区三区四区| 亚洲va国产天堂va久久en| 成人午夜视频福利| 国产午夜精品久久| 狠狠色丁香久久婷婷综合_中| 欧美一二三四在线| 蜜臀久久99精品久久久久久9| 欧美日韩国产精品成人| 午夜精品久久久久久久久久| 欧美三级电影在线看|