public override string ToString() { if (_fd == null) { return("<closed>"); } string s; if (_incoming && !_bound) { s = "local address = " + Network.addrToString(_addr); } else if (_state == StateNotConnected) { s = "local address = " + Network.localAddrToString(Network.getLocalAddress(_fd)); if (_peerAddr != null) { s += "\nremote address = " + Network.addrToString(_peerAddr); } } else { s = Network.fdToString(_fd); } if (_mcastAddr != null) { s += "\nmulticast address = " + Network.addrToString(_mcastAddr); } return(s); }
public void beginWrite(EndPoint endpoint, Buffer buf) { string addr = Network.addrToString(endpoint); StringBuilder str = new StringBuilder(); str.Append("CONNECT "); str.Append(addr); str.Append(" HTTP/1.1\r\nHost: "); str.Append(addr); str.Append("\r\n\r\n"); #if SILVERLIGHT byte[] b = System.Text.Encoding.UTF8.GetBytes(str.ToString()); #else byte[] b = System.Text.Encoding.ASCII.GetBytes(str.ToString()); #endif // // HTTP connect request // buf.resize(b.Length, false); buf.b.position(0); buf.b.put(b); buf.b.position(0); buf.b.limit(buf.size()); }
public override string ToString() { if (_fd == null) { return("<closed>"); } string s; if (_state == StateNotConnected) { s = "local address = " + Network.localAddrToString(Network.getLocalAddress(_fd)); if (_peerAddr != null) { s += "\nremote address = " + Network.addrToString(_peerAddr); } } else { s = Network.fdToString(_fd); } #if !SILVERLIGHT if (_mcastAddr != null) { s += "\nmulticast address = " + Network.addrToString(_mcastAddr); } #endif return(s); }
public override string ToString() { return(Network.addrToString(_addr)); }
public override string ToString() { return(Network.addrToString(_proxy == null ? _addr : _proxy.getAddress())); }
// // Only for use by UdpEndpoint. // internal UdpTransceiver(Instance instance, string host, int port, string mcastInterface, bool connect) { _traceLevels = instance.traceLevels(); _logger = instance.initializationData().logger; _stats = instance.initializationData().stats; _state = connect ? StateNeedConnect : StateNotConnected; _incoming = true; try { _addr = Network.getAddressForServer(host, port, instance.protocolSupport(), instance.preferIPv6()); #if ICE_SOCKET_ASYNC_API _readEventArgs = new SocketAsyncEventArgs(); _readEventArgs.RemoteEndPoint = _addr; _readEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(ioCompleted); _writeEventArgs = new SocketAsyncEventArgs(); _writeEventArgs.RemoteEndPoint = _addr; _writeEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(ioCompleted); #endif _fd = Network.createServerSocket(true, _addr.AddressFamily, instance.protocolSupport()); setBufSize(instance); #if !SILVERLIGHT Network.setBlock(_fd, false); #endif if (_traceLevels.network >= 2) { string s = "attempting to bind to udp socket " + Network.addrToString(_addr); _logger.trace(_traceLevels.networkCat, s); } #if !SILVERLIGHT if (Network.isMulticast((IPEndPoint)_addr)) { Network.setReuseAddress(_fd, true); _mcastAddr = (IPEndPoint)_addr; if (AssemblyUtil.platform_ == AssemblyUtil.Platform.Windows) { // // Windows does not allow binding to the mcast address itself // so we bind to INADDR_ANY (0.0.0.0) instead. As a result, // bi-directional connection won't work because the source // address won't the multicast address and the client will // therefore reject the datagram. // if (_addr.AddressFamily == AddressFamily.InterNetwork) { _addr = new IPEndPoint(IPAddress.Any, port); } else { _addr = new IPEndPoint(IPAddress.IPv6Any, port); } } _addr = Network.doBind(_fd, _addr); if (port == 0) { _mcastAddr.Port = ((IPEndPoint)_addr).Port; } Network.setMcastGroup(_fd, _mcastAddr.Address, mcastInterface); } else { if (AssemblyUtil.platform_ != AssemblyUtil.Platform.Windows) { // // Enable SO_REUSEADDR on Unix platforms to allow // re-using the socket even if it's in the TIME_WAIT // state. On Windows, this doesn't appear to be // necessary and enabling SO_REUSEADDR would actually // not be a good thing since it allows a second // process to bind to an address even it's already // bound by another process. // // TODO: using SO_EXCLUSIVEADDRUSE on Windows would // probably be better but it's only supported by recent // Windows versions (XP SP2, Windows Server 2003). // Network.setReuseAddress(_fd, true); } _addr = Network.doBind(_fd, _addr); } #endif if (_traceLevels.network >= 1) { StringBuilder s = new StringBuilder("starting to receive udp packets\n"); s.Append(ToString()); List <string> interfaces = Network.getHostsForEndpointExpand( Network.endpointAddressToString(_addr), instance.protocolSupport(), true); if (interfaces.Count != 0) { s.Append("\nlocal interfaces: "); s.Append(String.Join(", ", interfaces.ToArray())); } _logger.trace(_traceLevels.networkCat, s.ToString()); } } catch (Ice.LocalException) { _fd = null; throw; } }