示例#1
0
        private void run()
        {
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, ChatSetting.port);//標識網路中某臺主機上的某一個程序。

            Socket newSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //addressFamily 指定 Socket 使用的定址方案,socketType 指定 Socket 的型別,protocolType 指定 Socket 使用的協議。

            newSocket.Bind(endPoint); //如果不事先Bind埠號的話,系統會預設在1024到5000隨機繫結一個埠號
            newSocket.Listen(10);     //擱置連線佇列長度上限。

            while (true)
            {
                Socket socket = newSocket.Accept();
                Console.WriteLine("接受一個新連線!");
                ChatSocket client = new ChatSocket(socket);
                //建立新的Socket以處理傳入的連線請求。使用完 Socket 後,使用 Close 方法關閉 Socket。
                try
                {
                    clientList.Add(client);
                    client.newlistener(processMsgComeIn);
                    //newlistener是方法(按下F12可以快數追此方法)(110.03.15)
                    //先解說newlistener此方法是用來開創一個執行續用來持續監聽對方送訊息過來的事件(委派)(110.03.15)
                    //newlistener,此方法裡面的參數是吃delegate的屬性,要用委派工作必須同一個物件要一致(110.03.15)
                    //public delegate String StrHandler(String str);這邊型態已說明是字串形式處理(110.03.15)
                    //***
                    //簡單說明:此方法執行續一直執行監聽對象傳來的訊息,並以delegate(事件(委派)的方式處理)(110.03.15)
                    //所以說此msg是掛在執行續得來的訊息,但執行續一個程式只能執行一個,但有了委派可以並行做某些事情(方法),而不互相打架一起占用到電腦的處理效能(110.03.15)
                    //這邊可以去網路上查執行續的寫法,並有delegate的時候的差別(網路都有)(110.03.15)
                }
                catch { }
            }
        }
示例#2
0
        private void sendMsg()
        {
            if (user().Length == 0)//判斷目前使用者有沒有輸入名稱,若沒有則是沒有長度的,因此會跳出視窗要求請輸入使用者名稱(110.03.15)
            {
                MessageBox.Show("請輸入使用者名稱!");
                return;
            }
            if (client == null)
            {
                client = ChatSocket.connect(ChatSetting.serverIP);//這邊是開始連上server的ip(110.03.15)
                client.newlistener(processMsgComeIn);
                //ChatServer.cs檔案ChattingRoom類別裡的40行有解說(110.03.15)

                client.send("< " + user() + " >  新使用者進入!");
                textBoxUser.Enabled = false;
            }
            if (msg().Length > 0)
            {
                client.send(user() + " : " + msg());
                textBoxMsg.Text = "";
            }
        }