Esempio n. 1
0
        private void ConnectServer()

        {
            try

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

                SckSPort.Connect(new IPEndPoint(IPAddress.Parse(RmIp), SPort));

                // RmIp和SPort分別為string和int型態, 前者為Server端的IP, 後者為Server端的Port

                if (!SckSPort.Connected)
                {
                    tObj.OnError();
                    logger.Error("Connect to " + RmIp + ":" + SPort + " Fail!");
                    return;
                }
                else
                {
                    logger.Info("Connected! " + RmIp + ":" + SPort);
                    tObj.OnConnected();
                }

                // 同 Server 端一樣要另外開一個執行緒用來等待接收來自 Server 端傳來的資料, 與Server概念同

                Thread SckSReceiveTd = new Thread(SckSReceiveProc);
                SckSReceiveTd.IsBackground = true;
                SckSReceiveTd.Start();
            }
            catch (Exception e) {
                logger.Error("(ConnectServer " + Desc + " " + RmIp + ":" + SPort + ")" + e.Message + "\n" + e.StackTrace);
                tObj.OnError();
            }
        }