Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private int nonBlockRecv(byte[] recvBytes, int offset, int size, SocketFlags sf)
- {
- int bytesRecv = 0;
- while (true)
- {
- try
- {
- nonBlockSend(new byte[1], 0, 0, sf);
- bytesRecv = _socket.Receive(recvBytes, offset, size, sf);
- break;
- }
- catch (SocketException excp)
- {
- if (excp.ErrorCode != 10035) // WSAEWOULDBLOCK
- throw excp;
- }
- }
- return bytesRecv;
- }
- private int nonBlockSend(byte[] sendBytes, int offset, int size, SocketFlags sf)
- {
- int bytesSent = 0;
- while (true)
- {
- try
- {
- _socket.Send(sendBytes, offset, size, sf);
- break;
- }
- catch (SocketException excp)
- {
- if (excp.ErrorCode != 10035) // WSAEWOULDBLOCK
- throw excp;
- }
- }
- return bytesSent;
- }
- int recv = sock.Receive(data);
- if (recv == 0)
- {
- // Remote client has disconnected.
- }
- else
- {
- // Remote client has sent data.
- }
- while (numberOfBytesRead == 0)
- {
- try
- {
- IsConnected();
- _socket.ReceiveTimeout = 5000;
- numberOfBytesRead = _socket.Receive(myReadBuffer, 0, myReadBuffer.Length, SocketFlags.None);
- }
- catch (Exception e)
- {
- if (e.GetType() == typeof (LostConnection))
- {
- Status = SocketStatus.offline;
- throw;
- }
- }
- }
- public bool IsConnected(Socket s)
- {
- try
- {
- ASCIIEncoding encoder = new ASCIIEncoding();
- byte[] buffer = encoder.GetBytes("test");
- s.Send(buffer, 0, buffer.Length, SocketFlags.None);
- }
- catch (Exception)
- {
- throw new LostConnection();
- }
- return s.Connected;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement