I used SocketAsyncEventArgs to build a tiny Socket Server side. but encountering some problems, when I accepted the client socket, then I tried to use e.AcceptSocket.ReceiveAsync to receive client side info, but I don't know why it always show True to me. here is the server side:
private void ProcessAccept(SocketAsyncEventArgs e)
{
Console.WriteLine("Process Accept!");
if (e.BytesTransferred > 0)
{
Console.WriteLine("client online...");
}
SocketAsyncEventArgs readEventArgs = new SocketAsyncEventArgs();
readEventArgs.AcceptSocket = e.AcceptSocket;
readEventArgs.SetBuffer(new byte[1024], 0, 1024);
readEventArgs.Completed+=readEventArgsIO_Completed;
Boolean willRaiseEvent = e.AcceptSocket.ReceiveAsync(readEventArgs);
if (!willRaiseEvent)
{
this.ProcessReceive(readEventArgs);
}
this.StartAccept(e);
}
my client side only use the Connect method to connect the server side and send info "Hello Server" to it. but why I am here always got "True"?
Boolean willRaiseEvent = e.AcceptSocket.ReceiveAsync(readEventArgs);
thx.
Have solved this. because the buffer size is set too large. "Hello World" only contains 12 chars. so I should set the Buffer size as 12. readEventArgs.SetBuffer(new byte[12], 0, 12);