public static void Shutdown() { if (Queue != null) { Queue.Clear(); } }
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(); } }
public void releaseResources() { _queue.Clear(); }
public void stopUsingReceiveQueue() { _queue.Clear(); _isRecvQueueUsing = false; }
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(); }
public void ClearBuffer() { _queue.Clear(); //_isRecvQueueUsing = false; }
public static void Shutdown() { Queue.Clear(); }