public TcpConnection Accept() { IntPtr accepted = SocketImports.accept(_handle, IntPtr.Zero, 0); if (accepted == new IntPtr(-1)) { var error = SocketImports.WSAGetLastError(); SocketImports.WSACleanup(); throw new Exception(String.Format("listen failed with {0}", error)); } return(new TcpConnection(accepted)); }
public int Receive(byte[] bytes) { unsafe { fixed(byte *buffer = bytes) { IntPtr ptr = new IntPtr(buffer); int bytesReceived = SocketImports.recv(Handle, ptr, bytes.Length, 0); if (bytesReceived < 0) { var error = SocketImports.WSAGetLastError(); throw new Exception(String.Format("receive failed with {0}", error)); } return(bytesReceived); } } }
public int Send(byte[] bytes, int count) { unsafe { fixed(byte *buffer = bytes) { IntPtr ptr = new IntPtr(buffer); int bytesSent = SocketImports.send(_handle, ptr, count, 0); if (bytesSent == SocketImports.SOCKET_ERROR) { var error = SocketImports.WSAGetLastError(); throw new Exception(String.Format("send failed with {0}", error)); } return(bytesSent); } } }
public TcpServer(ushort port, byte address1, byte address2, byte address3, byte address4) { var version = new TcpServer.Version(2, 2); WSDATA data; int result = SocketImports.WSAStartup((short)version.Raw, out data); if (result != 0) { var error = SocketImports.WSAGetLastError(); throw new Exception(String.Format("ERROR: WSAStartup returned {0}", error)); } _handle = SocketImports.socket(ADDRESS_FAMILIES.AF_INET, SOCKET_TYPE.SOCK_STREAM, PROTOCOL.IPPROTO_TCP); if (_handle == IntPtr.Zero) { var error = SocketImports.WSAGetLastError(); SocketImports.WSACleanup(); throw new Exception(String.Format("ERROR: socket returned {0}", error)); } Start(port, address1, address2, address3, address4); }