public Remote Receive() { WinSock.sockaddr_in recvaddr = new WinSock.sockaddr_in(); int addrlen = WinSock.sockaddr_in.Size; var len = WinSock.recvfrom(_Socket, Buffer.Pointer, Buffer.Capacity, 0, ref recvaddr, ref addrlen); if (len >= 0) { var ret = FindRemote(ref recvaddr); if (ret == null) { //block return null; } Buffer.Reset(len); ret.ReceiveCount += 1; return ret; } var e = Marshal.GetLastWin32Error(); if (e == 10035) { return null; } throw new NetworkException(e); }
public void Bind(int port) { WinSock.sockaddr_in addr = new WinSock.sockaddr_in(); addr.sin_family = WinSock.AF_INET; addr.sin_port = WinSock.htons((ushort)port); addr.sin_addr = 0; //any WinSock.bind(_Socket, ref addr, WinSock.sockaddr_in.Size); }
public Remote(ref WinSock.sockaddr_in addr, long time) { Address = addr; LastSend = time; LastReceived = time; }
public Remote Send(string ip, int port) { WinSock.sockaddr_in addr = new WinSock.sockaddr_in(); addr.sin_family = WinSock.AF_INET; addr.sin_port = WinSock.htons((ushort)port); addr.sin_addr = WinSock.inet_addr(ip); var remote = FindRemote(ref addr); if (remote == null) { return null; } Send(remote); return remote; }