internal TcpAcceptor(TcpEndpoint endpoint, ObjectAdapter adapter) { _adapter = adapter; _addr = Network.GetAddressForServerEndpoint(endpoint.Host, endpoint.Port, endpoint.Communicator.IPVersion, endpoint.Communicator.PreferIPv6); _socket = Network.CreateServerSocket(false, _addr.AddressFamily, endpoint.Communicator.IPVersion); try { _socket.Bind(_addr); _addr = (IPEndPoint)_socket.LocalEndPoint !; _socket.Listen(endpoint.Communicator.GetPropertyAsInt("Ice.TCP.Backlog") ?? 511); } catch (SocketException ex) { _socket.CloseNoThrow(); throw new TransportException(ex); } Endpoint = endpoint.Clone((ushort)_addr.Port); }
internal TcpAcceptor( TcpEndpoint endpoint, Communicator communicator, string host, ushort port, string adapterName) { _adapterName = adapterName; _endpoint = endpoint; _communicator = communicator; _backlog = communicator.GetPropertyAsInt("Ice.TCP.Backlog") ?? 511; try { int ipVersion = _communicator.IPVersion; _addr = Network.GetAddressForServerEndpoint(host, port, ipVersion, _communicator.PreferIPv6); _fd = Network.CreateServerSocket(false, _addr.AddressFamily, ipVersion); Network.SetBlock(_fd, false); Network.SetTcpBufSize(_fd, _communicator); } catch (Exception) { _fd = null; throw; } }
internal TcpAcceptor(TcpEndpoint endpoint, IConnectionManager manager, ObjectAdapter adapter) { _manager = manager; _adapter = adapter; _addr = Network.GetAddressForServerEndpoint(endpoint.Host, endpoint.Port, Network.EnableBoth); _socket = Network.CreateServerSocket(endpoint, _addr.AddressFamily); try { _socket.Bind(_addr); _addr = (IPEndPoint)_socket.LocalEndPoint !; _socket.Listen(endpoint.Communicator.GetPropertyAsInt("Ice.TCP.Backlog") ?? 511); } catch (SocketException ex) { _socket.CloseNoThrow(); throw new TransportException(ex); } Endpoint = endpoint.Clone((ushort)_addr.Port); }
internal TcpAcceptor(TcpEndpoint endpoint, ObjectAdapter adapter) { _adapter = adapter; _addr = Network.GetAddressForServerEndpoint(endpoint.Host, endpoint.Port, endpoint.Communicator.IPVersion, endpoint.Communicator.PreferIPv6); _fd = Network.CreateServerSocket(false, _addr.AddressFamily, endpoint.Communicator.IPVersion); Network.SetBlock(_fd, false); Network.SetTcpBufSize(_fd, endpoint.Communicator); _addr = Network.DoBind(_fd, _addr); Network.DoListen(_fd, endpoint.Communicator.GetPropertyAsInt("Ice.TCP.Backlog") ?? 511); Endpoint = endpoint.NewPort((ushort)_addr.Port); }
// Only for use by UdpEndpoint. internal UdpTransceiver(UdpEndpoint endpoint, Communicator communicator) { _communicator = communicator; _addr = Network.GetAddressForServerEndpoint(endpoint.Host, endpoint.Port, Network.EnableBoth); _multicastInterface = endpoint.MulticastInterface; _incoming = true; Socket = Network.CreateServerSocket(endpoint, _addr.AddressFamily); try { Network.SetBufSize(Socket, _communicator, Transport.UDP); _rcvSize = (int)Socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer) !; _sndSize = (int)Socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer) !; } catch (SocketException ex) { Socket.CloseNoThrow(); throw new TransportException(ex); } }
// // Only for use by UdpEndpoint. // internal UdpTransceiver(UdpEndpoint endpoint, Communicator communicator, string transport, string host, int port, string mcastInterface, bool connect) { _endpoint = endpoint; _communicator = communicator; Transport = transport; _state = connect ? StateNeedConnect : StateNotConnected; _mcastInterface = mcastInterface; _incoming = true; _port = port; try { _addr = Network.GetAddressForServerEndpoint(host, port, communicator.IPVersion, communicator.PreferIPv6); _readEventArgs = new SocketAsyncEventArgs(); _readEventArgs.RemoteEndPoint = _addr; _readEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(IoCompleted); _writeEventArgs = new SocketAsyncEventArgs(); _writeEventArgs.RemoteEndPoint = _addr; _writeEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(IoCompleted); _fd = Network.CreateServerSocket(true, _addr.AddressFamily, communicator.IPVersion); SetBufSize(-1, -1); Network.SetBlock(_fd, false); } catch (System.Exception) { if (_readEventArgs != null) { _readEventArgs.Dispose(); } if (_writeEventArgs != null) { _writeEventArgs.Dispose(); } _fd = null; throw; } }
// Only for use by UdpEndpoint. internal UdpSocket(UdpEndpoint endpoint, Communicator communicator) { Debug.Assert(endpoint.Address != IPAddress.None); // not a DNS name _communicator = communicator; _addr = new IPEndPoint(endpoint.Address, endpoint.Port); _multicastInterface = endpoint.MulticastInterface; _incoming = true; Socket = Network.CreateServerSocket(endpoint, _addr.AddressFamily); try { Network.SetBufSize(Socket, _communicator, Transport.UDP); _rcvSize = (int)Socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer) !; _sndSize = (int)Socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer) !; } catch (SocketException ex) { Socket.CloseNoThrow(); throw new TransportException(ex, RetryPolicy.NoRetry); } }
// Only for use by UdpEndpoint. internal UdpTransceiver( Communicator communicator, string host, ushort port, string multicastInterface) { _communicator = communicator; _addr = Network.GetAddressForServerEndpoint(host, port, communicator.IPVersion, communicator.PreferIPv6); _multicastInterface = multicastInterface; _incoming = true; Socket = Network.CreateServerSocket(true, _addr.AddressFamily, communicator.IPVersion); try { Network.SetBufSize(Socket, _communicator, Transport.UDP); _rcvSize = (int)Socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer) !; _sndSize = (int)Socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer) !; } catch (SocketException ex) { Socket.CloseNoThrow(); throw new TransportException(ex); } }