다음 내용에 도움이 필요합니다. 이것은 비동기 소켓과 관련이 있습니다. 보낸 사람에서C# 무효 ReceiveData (IAsyncResult iar)
은 :
볼 수 있습니다 여기에string stringData = "Welcome to my server server server";
byte[] message1 = Encoding.ASCII.GetBytes(stringData);
//MessageBox.Show(message1.Length.ToString());
client.BeginSend(message1, 0, message1.Length, SocketFlags.None, new AsyncCallback(SendData), client);
의 message.length 찾을 수 있습니다.
- 클라이언트에
:
Socket remote = (Socket)iar.AsyncState;
int recv = remote.EndReceive(iar);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
내 질문은 전체 메시지를 받았습니다 될 때까지 전송되는 데이터의 실제 길이에 액세스하고 전화를 받게되며 데이터를 기반으로하는 방법이 ?
접두어 대신 여기에 언급 된대로 루프를 구현했습니다. http://stackoverflow.com/questions/582550/c-begin-endreceive-how -do-i-read-large-data. 그것은 일하는 것 같다! :) – iTEgg
소켓이 닫힐 때까지 모든 데이터를 받기를 원한다면 루핑을 계속할 수 있습니다. 그렇지 않으면 실사 *를 보았을 때 알 수 없습니다. 연결에서 하나의 요청/응답 만하는 것이 좋지만 각 방향에서 여러 메시지가있는 "대화"유형의 프로토콜에서는 작동하지 않습니다. –