public void ConnectAsync(string host, ushort port) { UAddress address = new UAddress(host, port); ENetAddress nativeAddress = address.Struct; this.PeerPtr = NativeMethods.enet_host_connect(this.poller.Host, ref nativeAddress, 2, 0); if (this.PeerPtr == IntPtr.Zero) { throw new Exception($"host connect call failed, {host}:{port}"); } this.poller.USocketManager.Add(this.PeerPtr, this); }
public void ConnectAsync(IPEndPoint ipEndPoint) { UAddress address = new UAddress(ipEndPoint.Address.ToString(), ipEndPoint.Port); ENetAddress nativeAddress = address.Struct; this.PeerPtr = NativeMethods.enet_host_connect(this.poller.Host, ref nativeAddress, 2, 0); if (this.PeerPtr == IntPtr.Zero) { throw new Exception($"host connect call failed, {ipEndPoint}"); } this.poller.USocketManager.Add(this.PeerPtr, this); }
public UPoller(string hostName, ushort port) { try { this.USocketManager = new USocketManager(); UAddress address = new UAddress(hostName, port); ENetAddress nativeAddress = address.Struct; this.host = NativeMethods.enet_host_create(ref nativeAddress, NativeMethods.ENET_PROTOCOL_MAXIMUM_PEER_ID, 0, 0, 0); if (this.host == IntPtr.Zero) { throw new Exception("Host creation call failed."); } NativeMethods.enet_host_compress_with_range_coder(this.host); } catch (Exception e) { throw new Exception($"UPoll construct error, address: {hostName}:{port}", e); } }
internal static extern IntPtr enet_host_connect(IntPtr host, ref ENetAddress address, uint channelCount, uint data);
internal static extern IntPtr enet_host_create( ref ENetAddress address, uint peerLimit, uint channelLimit, uint incomingBandwidth, uint outgoingBandwidth);
internal static extern int enet_address_get_host_ip(ref ENetAddress address, StringBuilder hostIp, uint ipLength);
internal static extern int enet_address_get_host(ref ENetAddress address, StringBuilder hostName, uint nameLength);
internal static extern int enet_address_set_host(ref ENetAddress address, string hostName);