public void Connect(IPAddress ipAddress, ushort portNumber) { if (ipAddress != IPAddress.Loopback) { throw new ArgumentException("not_loopback"); } if (isListened) { throw new InvalidOperationException("listened"); } if (isConnected) { throw new InvalidOperationException("already_connected"); } ConnectReturn cr = sn.Connect(portNumber, this); localPortNumber = cr.localPortNumber; remotePortNumber = cr.remotePortNumber; isConnected = true; }