C\#소켓 통신 개선 기록

5388 단어 소켓 통신
1. Socket
  • 원본 Socket,Send 와 Recv 방법 으로 메 시 지 를 보 내 고 얻 습 니 다.(다른 배경 스 레 드 는 끊임없이 가 져 오고 보 냅 니 다)
  •   
     public void RecvMsg()
    
            {
    
                //receive message
    
                bool isListen = true;
    
    
    
                while (isListen)
    
                {
    
                    string recStr = "";
    
                    byte[] recBytes = new byte[4096];
    
                    int bytes = clientSocket.Receive(recBytes, recBytes.Length, 0);
    
                    recStr += Encoding.UTF8.GetString(recBytes, 0, bytes);
    
    
    
                    if (!String.IsNullOrWhiteSpace(recStr))
    
                    {
    
                        if (recStr.EndsWith(Environment.NewLine))
    
                        {
    
                            recStr = recStr.Substring(0, recStr.Length - Environment.NewLine.Length);
    
                        }
    
                        AppendContet(recStr);
    
                    }
    
                }
    
    
    
            }

     


  • Socket 사용 BeginSend 와 BeginReceive 는 비동기 전송 과 메 시 지 를 가 져 옵 니 다.
  •   
    private void button1_Click(object sender, EventArgs e)
    
            {
    
                //send message
    
                string sendStr = txtMsg.Text;
    
                byte[] sendBytes = Encoding.UTF8.GetBytes(sendStr);
    
                clientSocket.BeginSend(sendBytes, 0, sendBytes.Length, SocketFlags.None, new AsyncCallback(Send_Complete), clientSocket);
    
            }
    
    
    
    
    
            private void Send_Complete(IAsyncResult e)
    
            {
    
                if (e.IsCompleted)
    
                {
    
                    AppendDebugMsg("       ");
    
                }
    
                else
    
                {
    
                    AppendDebugMsg("      ");
    
                }
    
                var socket = e.AsyncState as Socket;
    
                if (socket == null)
    
                {
    
                    AppendDebugMsg("    Socket  ");
    
                }
    
            }

     


  • 사용 SocketAsyncEventArgs 는 효율 적 인 비동기 전송 과 메 시 지 를 가 져 옵 니 다.
  •   
     public void SendAync(byte[] sendBytes)
    
            {
    
                SocketAsyncEventArgs sendSocketArgs = GlobalConfig.SendPool.Pop();
    
                sendSocketArgs.UserToken = this;
    
                sendSocketArgs.SetBuffer(sendBytes, 0, sendBytes.Length);
    
    
    
                this.ClientSocket.SendAsync(sendSocketArgs);
    
            }

     


  • 2.Socket 과 WebSocket 의 상호 통신
    전단 Html 5 WebSocket 구축
  • Socket 수신 과 발송 방법 개선 지원 WebSocket.

  •  
    기타:
  • 자바 가 Socket 에 대한 지원 과 ReadLine 으로 인 한 IO 차단

  • 이상 포획 및 폐기 Socket 처리

    좋은 웹페이지 즐겨찾기