C\#소켓 통신 개선 기록
5388 단어 소켓 통신
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 처리
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: