Ejemplo n.º 1
0
 public virtual void Connect(IPv4AddressPort remoteAddress)
 {
     RemoteAddress = remoteAddress;
     Client.Connect(RemoteAddress.AddressAsIPEndPoint);
     if (SocketConnected != null)
     {
         SocketConnected(this);
     }
     ConnectTime = DateTime.UtcNow;
     BeginReceive();
 }
Ejemplo n.º 2
0
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            IPv4AddressPort address;
            string          strvalue = value as string;

            if (strvalue == null || IPv4AddressPort.TryParse(strvalue, out address) == false)
            {
                address = new IPv4AddressPort();
            }
            return(address);
        }
Ejemplo n.º 3
0
        public bool Open(LogLevel logLevel, String filename, UInt32 flags, IPv4AddressPort multicastAddress)
        {
            if (filename != null)
            {
                _fileName = filename;
            }

            /** setting the flags will open all our output sources */
            _logging = SetFlags(logLevel, flags);

            return(_logging);
        }
Ejemplo n.º 4
0
        public static IPv4AddressPort GetIPv4AddressPort(Object address)
        {
            IPv4AddressPort ret;

            if (Convert.IsDBNull(address))
            {
                ret = new IPv4AddressPort();
            }
            else
            {
                ret = new IPv4AddressPort(address.ToString());
            }
            return(ret);
        }
Ejemplo n.º 5
0
        public bool ClientExists(IPv4AddressPort address)
        {
            bool bRet;

            _clientLock.Lock();
            try
            {
                bRet = _clientList.ContainsKey(address.Address);
            }
            finally
            {
                _clientLock.Unlock();
            }

            return(bRet);
        }
Ejemplo n.º 6
0
        public void AddListener(IPv4AddressPort address)
        {
            if (_listeners.ContainsKey(address.Port))
            {
                throw new Exception(String.Format("Attempt to add listener port {0}. Port already exists", address.Port));
            }

            TcpListener listener = new TcpListener(address.AddressAsIPEndPoint);

            _listeners.Add(address.Port, listener);

            if (State == ThreadState.Started)
            {
                StartListener(listener);
            }
        }
Ejemplo n.º 7
0
        public static bool IsListenerAtAddress(IPv4AddressPort address)
        {
            TcpClient    client = new TcpClient();
            ListenerTest test   = new ListenerTest(client);

            try
            {
                client.BeginConnect(address.AddressAsIPv4Address.AddressAsIPAddress, address.Port, new AsyncCallback(ListenerTesterConnectCallback), test);
                if (test.WaitEvent.Wait(30 * 1000) == false)
                {
                    client.Close();
                }
            }
            catch (Exception) {}
            return(test.IsConnected);
        }
Ejemplo n.º 8
0
        //
        // Constructor
        //
        /// <summary>
        /// Create a new TcpClient with a connected TCPClient
        /// </summary>
        /// <param name="tcpClient"></param>
        protected TcpConnectedClient(TcpClient tcpClient, TcpListener listener, TcpServer parent)
        {
            _tcpClient       = tcpClient;
            _listenerAddress = new IPv4AddressPort((IPEndPoint)listener.LocalEndpoint);

            // Set Reference To Parent
            _server = parent;

            // Set Local and Remote Addresses
            _localAddress  = new IPv4AddressPort(((IPEndPoint)_tcpClient.Client.LocalEndPoint).Address.ToString() + ":" + ((IPEndPoint)_tcpClient.Client.LocalEndPoint).Port.ToString());
            _remoteAddress = new IPv4AddressPort(((IPEndPoint)_tcpClient.Client.RemoteEndPoint).Address.ToString() + ":" + ((IPEndPoint)_tcpClient.Client.RemoteEndPoint).Port.ToString());

            // Server will start our I/O after client is fully constructed
            _receiveBuffer = new byte[PACKET_MAX_LEN];

            _connectTime = DateTime.UtcNow;
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Sends data to an existing open client connection.
        /// </summary>
        /// <returns>Number of bytes sent or -1 if an Exception occurred</returns>
        public int SendToExistingConnection(IPv4AddressPort address, byte[] packet, int offset, int size)
        {
            int retVal = 0;

            // Find The Existing Client By IPAddress:Port
            TcpConnectedClient client;

            try
            {
                _clientLock.Lock();
                if (_clientList.TryGetValue(address.Address, out client) == false)
                {
                    client = null;
                }
            }
            finally
            {
                _clientLock.Unlock();
            }

            try
            {
                if (client != null)
                {
                    // Client Found...
                    retVal = SendToExistingConnection(client, packet, offset, size);
                }
                else
                {
                    // Throw Exception If Client Does Not Exists
                    throw new Exception("Cannot send because the client connection does not exist.");
                }
            }
            catch (Exception e)
            {
                // Notify Caller Of Exception
                RaiseException(e);
                retVal = -1;                  // Indicate An Error Occurred
            }
            finally
            {
                _clientLock.Unlock();
            }
            return(retVal);
        }
Ejemplo n.º 10
0
 public TcpServer(IPv4AddressPort address, String name)
     : this(name)
 {
     AddListener(address);
 }
Ejemplo n.º 11
0
 public static bool IsReasonableEndpoint(IPv4AddressPort address)
 {
     return(address.Port != 0 && address.AddressAsIPv4Address.IsEmpty == false);
 }
Ejemplo n.º 12
0
 public virtual void BeginConnect(IPv4AddressPort remoteAddress)
 {
     RemoteAddress  = remoteAddress;
     _connectResult = Client.BeginConnect(remoteAddress.AddressAsIPv4Address.AddressAsIPAddress, remoteAddress.Port, new AsyncCallback(ConnectCallback), this);
 }