Fixed not checking for sync on socket.
This commit is contained in:
@@ -61,11 +61,12 @@ namespace Framework.Networking
|
|||||||
|
|
||||||
socketEventargs.SetBuffer(_receiveBuffer, 0, _receiveBuffer.Length);
|
socketEventargs.SetBuffer(_receiveBuffer, 0, _receiveBuffer.Length);
|
||||||
|
|
||||||
socketEventargs.Completed += ReadHandlerInternal;
|
socketEventargs.Completed += (sender, args) => ReadHandlerInternal(args);
|
||||||
socketEventargs.UserToken = _socket;
|
|
||||||
socketEventargs.SocketFlags = SocketFlags.None;
|
socketEventargs.SocketFlags = SocketFlags.None;
|
||||||
|
socketEventargs.RemoteEndPoint = _socket.RemoteEndPoint;
|
||||||
|
|
||||||
_socket.ReceiveAsync(socketEventargs);
|
if (!_socket.ReceiveAsync(socketEventargs))
|
||||||
|
ReadHandlerInternal(socketEventargs);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -73,7 +74,7 @@ namespace Framework.Networking
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate void SocketReadCallback(object sender, SocketAsyncEventArgs args);
|
public delegate void SocketReadCallback(SocketAsyncEventArgs args);
|
||||||
public void AsyncReadWithCallback(SocketReadCallback callback)
|
public void AsyncReadWithCallback(SocketReadCallback callback)
|
||||||
{
|
{
|
||||||
if (!IsOpen())
|
if (!IsOpen())
|
||||||
@@ -85,11 +86,11 @@ namespace Framework.Networking
|
|||||||
|
|
||||||
socketEventargs.SetBuffer(_receiveBuffer, 0, _receiveBuffer.Length);
|
socketEventargs.SetBuffer(_receiveBuffer, 0, _receiveBuffer.Length);
|
||||||
|
|
||||||
socketEventargs.Completed += new EventHandler<SocketAsyncEventArgs>(callback);
|
socketEventargs.Completed += (sender, args) => callback(args);
|
||||||
socketEventargs.UserToken = _socket;
|
socketEventargs.UserToken = _socket;
|
||||||
socketEventargs.SocketFlags = SocketFlags.None;
|
socketEventargs.SocketFlags = SocketFlags.None;
|
||||||
|
if (!_socket.ReceiveAsync(socketEventargs))
|
||||||
_socket.ReceiveAsync(socketEventargs);
|
callback(socketEventargs);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -97,9 +98,8 @@ namespace Framework.Networking
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReadHandlerInternal(object sender, SocketAsyncEventArgs args)
|
void ReadHandlerInternal(SocketAsyncEventArgs args)
|
||||||
{
|
{
|
||||||
args.Completed -= ReadHandlerInternal;
|
|
||||||
if (args.SocketError != SocketError.Success)
|
if (args.SocketError != SocketError.Success)
|
||||||
{
|
{
|
||||||
CloseSocket();
|
CloseSocket();
|
||||||
@@ -126,6 +126,7 @@ namespace Framework.Networking
|
|||||||
socketEventargs.SetBuffer(data, 0, data.Length);
|
socketEventargs.SetBuffer(data, 0, data.Length);
|
||||||
socketEventargs.Completed += WriteHandlerInternal;
|
socketEventargs.Completed += WriteHandlerInternal;
|
||||||
socketEventargs.RemoteEndPoint = _socket.RemoteEndPoint;
|
socketEventargs.RemoteEndPoint = _socket.RemoteEndPoint;
|
||||||
|
socketEventargs.UserToken = _socket;
|
||||||
socketEventargs.SocketFlags = SocketFlags.None;
|
socketEventargs.SocketFlags = SocketFlags.None;
|
||||||
|
|
||||||
_socket.SendAsync(socketEventargs);
|
_socket.SendAsync(socketEventargs);
|
||||||
|
|||||||
@@ -84,9 +84,8 @@ namespace Game.Network
|
|||||||
AsyncReadWithCallback(InitializeHandler);
|
AsyncReadWithCallback(InitializeHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitializeHandler(object sender, SocketAsyncEventArgs args)
|
public void InitializeHandler(SocketAsyncEventArgs args)
|
||||||
{
|
{
|
||||||
args.Completed -= InitializeHandler;
|
|
||||||
if (args.SocketError != SocketError.Success)
|
if (args.SocketError != SocketError.Success)
|
||||||
{
|
{
|
||||||
CloseSocket();
|
CloseSocket();
|
||||||
|
|||||||
Reference in New Issue
Block a user