コード例 #1
0
 public static void Shutdown()
 {
     if (Queue != null)
     {
         Queue.Clear();
     }
 }
コード例 #2
0
        public void Connect(bool runReceiveThreadWhenConnected)
        {
            releaseThreads();


            _queue.Clear();

            //if((_thread!=null && _thread.ThreadState == ThreadState.Running) || this.isConnected()) Disconnect();
            int       id   = _threadId;
            UdpClient conn = new UdpClient();

            _clients.Add(id, conn);
            _queue.Clear();//이전 것은 의미가 없으므로 다시 큐를 비워줌..

            if (_sendType == SendType.Normal)
            {
                //_uSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

                conn.Connect(_serverIp, _serverPort);

                //_uSocket.Bind(_localEP);
            }
            else if (_sendType == SendType.Multicast)
            {
                conn.Connect((IPEndPoint)_remoteEP);
                conn.JoinMulticastGroup(NetFunctions.getIP4Address(_serverIp), NetFunctions.getMyIP4Address());

                //_uSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                //_uSocket.Bind(_localEP);
                //_uSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(server)));
            }
            else //broadcast
            {
                conn.Connect((IPEndPoint)_remoteEP);
                conn.Client.Bind(_localEP);
                conn.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.Broadcast, true);
            }
            _isConnected = true;
            if (runReceiveThreadWhenConnected)
            {
                runRecvThread();
            }
        }
コード例 #3
0
 public void releaseResources()
 {
     _queue.Clear();
 }
コード例 #4
0
 public void stopUsingReceiveQueue()
 {
     _queue.Clear();
     _isRecvQueueUsing = false;
 }
コード例 #5
0
        public void ReadyForClient()
        {
            _queue.Clear();
            if (_uSocket != null)
            {
                try
                {
                    _uSocket.Close();
                    _queue.Clear();
                }
                catch { }
            }
            if (_thread != null && _thread.ThreadState == ThreadState.Running)
            {
                Thread tt = _thread;
                _thread = null;
                tt.Abort();
            }

            _localEP = new IPEndPoint(IPAddress.Any, _port); //IPAddress.Any 는 서버전용.


            if (_sendType == SendType.Normal)
            {
                _uSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                try
                {
                    _uSocket.Bind(_localEP);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            else if (_sendType == SendType.Multicast)
            {
                _uSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                try
                {
                    _uSocket.Bind(_localEP);
                }
                catch (Exception e)
                {
                    throw e;
                }
                _uSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(_ip)));
                _uSocket.SetSocketOption(SocketOptionLevel.Udp, SocketOptionName.MulticastTimeToLive, 1);
            }
            else //broadcast
            {
                _uSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

                try
                {
                    _uSocket.Bind(_localEP);
                }
                catch (Exception e)
                {
                    throw e;
                }
                _uSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.Broadcast, true);
            }
            if (_readTimeout > 0)
            {
                _uSocket.ReceiveTimeout = _readTimeout;
            }
            if (_writeTimeout > 0)
            {
                _uSocket.SendTimeout = _writeTimeout;
            }

            _remoteEP = new IPEndPoint(IPAddress.None, _port); //this is blank IPEndPoint yet.

            runRecvThread();
        }
コード例 #6
0
 public void ClearBuffer()
 {
     _queue.Clear();
     //_isRecvQueueUsing = false;
 }
コード例 #7
0
ファイル: LogManager.cs プロジェクト: azhe127/ScheduleMaster
 public static void Shutdown()
 {
     Queue.Clear();
 }