コード例 #1
0
 public void InitTCP()
 {
     if (OwningConnection.MyTCPSocket != null)
     {
         m_RecArgs  = SocketAsyncEventArgsCache.PopReadEventArg(new EventHandler <SocketAsyncEventArgs>(IO_Completed), OwningConnection.MyTCPSocket);
         m_SendArgs = SocketAsyncEventArgsCache.PopSendEventArg(new EventHandler <SocketAsyncEventArgs>(IO_Completed), OwningConnection.MyTCPSocket);
     }
     else
     {
         throw new ArgumentException("AsynchTransitStrategy can't initialize TCP until the NetworkConnection has a valid TCPSocket. Currently TCPSocket is null.");
     }
 }
コード例 #2
0
ファイル: UDPListener.cs プロジェクト: Amitkapadi/WISP
        public bool StartListening(AddressFamily family, int port, int maxSimultaneousListens, Func <IPEndPoint, INetworkConnection> getConMethod)
        {
            try
            {
                GetConnnection = getConMethod;
                if (Socket == null)
                {
                    //// Log.LogMsg("Testy 30");
                    Socket = new System.Net.Sockets.Socket(family, SocketType.Dgram, ProtocolType.Udp);
                    //// Log.LogMsg("Testy 31");
                    Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                    //// Log.LogMsg("Testy 32");
                    Socket.ExclusiveAddressUse = false;
                    //// Log.LogMsg("Testy 33");
                    if (family == AddressFamily.InterNetworkV6)
                    {
                        //// Log.LogMsg("Testy 34");
                        Socket.SetSocketOption(SocketOptionLevel.IPv6, (SocketOptionName)27, 0); // set IPV6Only to false.  enables dual mode socket - V4+v6
                        //// Log.LogMsg("Testy 35");
                        Socket.Bind(new IPEndPoint(IPAddress.IPv6Any, port));
                        //// Log.LogMsg("Testy 36");
                    }
                    else
                    {
                        //// Log.LogMsg("Testy 37");
                        Socket.Bind(new IPEndPoint(IPAddress.Any, port));
                    }
                }
                //// Log.LogMsg("Testy 38");
                Port = ((IPEndPoint)Socket.LocalEndPoint).Port;

                m_ListenArgs = new List <SocketAsyncEventArgs>(maxSimultaneousListens);
                for (int i = 0; i < maxSimultaneousListens; i++)
                {
                    //// Log.LogMsg("Testy 39");
                    SocketAsyncEventArgs arg = SocketAsyncEventArgsCache.PopReadEventArg(new EventHandler <SocketAsyncEventArgs>(ReadCompleted), Socket);
                    if (family == AddressFamily.InterNetworkV6)
                    {
                        arg.RemoteEndPoint = new IPEndPoint(IPAddress.IPv6Any, 0);
                    }
                    else
                    {
                        arg.RemoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
                    }

                    //// Log.LogMsg("Testy 40");
                    m_ListenArgs.Add(arg);
                    //// Log.LogMsg("Testy 41");
                    bool willRaiseEvent = Socket.ReceiveFromAsync(arg);
                    //// Log.LogMsg("Testy 999");
                    if (!willRaiseEvent)
                    {
                        //// Log.LogMsg("Testy 42");
                        OnReceiveResolved(arg);
                    }
                }
            }
            catch (Exception e)
            {
                Log.LogMsg("UDPListener - error start listen: " + e.Message);
                return(false);
            }
            Listening = true;
            Log.LogMsg("UDPListener - Listening for UDP traffic on port " + port.ToString() + " with " + maxSimultaneousListens.ToString() + " max listeners.");
            return(true);
        }