Close() public method

public Close ( ) : void
return void
コード例 #1
0
        /// <deprecated>
        /// Not used. For reference only.
        /// </deprecated>
        private async void StartPolling1()
        {
            while (true)
            {
                var readResult = await pipeReader.ReadAsync().ConfigureAwait(false);

                ReadOnlySequence <byte> buffer   = readResult.Buffer;
                SequencePosition?       position = buffer.Start;
                var remainingBytes = buffer.Length;
                var writeResult    = (byte)0;
                while (remainingBytes > 0)
                {
                    while (localStackByteCount == 0)
                    {
                        await _tun.executeLwipTask(() => _socket.Output());

                        await localStackBufLock.WaitAsync().ConfigureAwait(false);
                    }
                    var bytesToWriteCount = Math.Min(remainingBytes, localStackByteCount);
                    var chunk             = buffer.Slice(position.Value, bytesToWriteCount);
                    var arr  = chunk.ToArray();
                    var more = remainingBytes != bytesToWriteCount;
                    writeResult = await _tun.executeLwipTask(() => _socket.Send(arr, more));

                    if (writeResult != 0)
                    {
                        OnError?.Invoke(this, writeResult);
                        pipeReader.Complete();
                        return;
                    }
                    remainingBytes -= bytesToWriteCount;
                    position        = buffer.GetPosition(bytesToWriteCount, position.Value);
                    Interlocked.Add(ref localStackByteCount, (int)-bytesToWriteCount);
                }
                pipeReader.AdvanceTo(position.Value, position.Value);
                await _tun.executeLwipTask(() => _socket.Output());

                if (readResult.IsCanceled || readResult.IsCompleted || writeResult != 0)
                {
                    break;
                }
            }
            pipeReader.Complete();
            await _tun.executeLwipTask(() => _socket.Close());

            Debug.WriteLine($"{TcpSocket.ConnectionCount()} connections now");
            LocalDisconnected = true;
            OnFinished(this);
            CheckShutdown();
        }
コード例 #2
0
ファイル: Controller.cs プロジェクト: attackgithub/QSharp
 /** Disconnects from PLC. */
 public bool Disconnect()
 {
     if (!connected)
     {
         return(false);
     }
     switch (plc)
     {
     case ControllerType.JF:
     case ControllerType.S7:
     case ControllerType.MB:
     case ControllerType.AB:
         try {
             if (socket != null)
             {
                 socket.Close();
                 socket = null;
             }
         } catch (Exception e) {
             Console.WriteLine("Error:" + e.ToString());
             return(false);
         }
         break;
     }
     connected = false;
     return(true);
 }
コード例 #3
0
        protected virtual void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            Task.Run(async() =>
            {
                // delay calling tcp connection close()
                // so that server have enough time to call close first.
                // This way we can push tcp Time_Wait to server side when possible.
                await Task.Delay(1000);

                proxyServer.UpdateServerConnectionCount(false);

                if (disposing)
                {
                    Stream.Dispose();

                    try
                    {
                        TcpSocket.Close();
                    }
                    catch
                    {
                        // ignore
                    }
                }
            });

            disposed = true;
        }
コード例 #4
0
ファイル: FastCGIConnection.cs プロジェクト: tiwb/AngeIO
 public void Close()
 {
     if (_socket != null)
     {
         _socket.Close();
     }
 }
コード例 #5
0
ファイル: DtmFileTransfer.cs プロジェクト: todoasap/CEX-NET
 private void TearDown()
 {
     if (_clientSocket != null)
     {
         if (_clientSocket.IsConnected)
         {
             _clientSocket.Close();
         }
         _clientSocket.Dispose();
     }
     if (_evtSendWait != null)
     {
         _evtSendWait.Dispose();
     }
     if (_fileSymProcessor != null)
     {
         _fileSymProcessor.Dispose();
     }
     if (_rcvBuffer != null)
     {
         _rcvBuffer.Dispose();
     }
     if (_sndBuffer != null)
     {
         _sndBuffer.Dispose();
     }
     if (_filePath != null)
     {
         _filePath = null;
     }
 }
コード例 #6
0
ファイル: NetworkClient.cs プロジェクト: perdsoul/unityServer
 public void Disconnect()
 {
     if (mClientSocket != null)
     {
         mClientSocket.Close();
     }
 }
コード例 #7
0
        private void DoChat()
        {
            NetworkStream stream = null;

            try
            {
                string message = string.Empty;

                while (true)
                {
                    stream = TcpSocket.GetStream();
                    byte[] sizeBuf = new byte[TcpSocket.ReceiveBufferSize];
                    stream.Read(sizeBuf, 0, (int)TcpSocket.ReceiveBufferSize);
                    int          size         = BitConverter.ToInt32(sizeBuf, 0);
                    MemoryStream memoryStream = new MemoryStream();

                    while (size > 0)
                    {
                        byte[] buffer;
                        if (size < TcpSocket.ReceiveBufferSize)
                        {
                            buffer = new byte[size];
                        }
                        else
                        {
                            buffer = new byte[TcpSocket.ReceiveBufferSize];
                        }

                        int rec = stream.Read(buffer, 0, buffer.Length);
                        size -= rec;
                        memoryStream.Write(buffer, 0, buffer.Length);
                    }
                    memoryStream.Close();
                    byte[] data = memoryStream.ToArray();
                    memoryStream.Dispose();
                    message = Encoding.UTF8.GetString(data);
                    if (message == "")
                    {
                        throw new Exception("공백 출력 == 상대방 소켓 끊어짐");
                    }
                    serverEvent.ReceiveServerLog(message);
                    OnReceived(message, ClientList[TcpSocket].ToString(), false);
                }
            }
            catch (Exception ex)
            {
                serverEvent.ErrorLog("DoChat", ex.Message);
                if (TcpSocket != null)
                {
                    OnDisconnected(TcpSocket);
                    TcpSocket.Close();
                    stream.Close();
                    if (ThreadHandler.IsAlive == true)
                    {
                        ThreadHandler.Interrupt();
                        ThreadHandler.Abort();
                    }
                }
            }
        }
コード例 #8
0
ファイル: HttpServer.cs プロジェクト: tiwb/AngeIO
        internal void HandleUpgrade(HttpServerRequest msg, TcpSocket socket, ArraySegment <byte> header)
        {
            try {
                if (OnUpgrade != null)
                {
                    OnUpgrade.Invoke(msg, socket, header);
                }
                else
                {
                    socket.Close();
                }
            }

            catch {
                socket.Close();
            }
        }
コード例 #9
0
        public void SocketCloseTest()
        {
            TcpSocket sock = new TcpSocket();

            sock.Close();

            Assert.DoesNotThrowAsync(() => { return(sock.ConnectAsync("localhost", 1002).AsTask()); });
        }
コード例 #10
0
 static public int Close(IntPtr l)
 {
     try {
         TcpSocket self = (TcpSocket)checkSelf(l);
         self.Close();
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
コード例 #11
0
ファイル: TcpTransport.cs プロジェクト: yonglehou/amqpnetlite
        public void Connect(Connection connection, Address address, bool noVerification)
        {
            var ipHostEntry = Dns.GetHostEntry(address.Host);
            Exception exception = null;
            TcpSocket socket = null;

            foreach (var ipAddress in ipHostEntry.AddressList)
            {
                if (ipAddress == null)
                {
                    continue;
                }

                try
                {
                    socket = new TcpSocket();
                    socket.Connect(new IPEndPoint(ipAddress, address.Port));
                    exception = null;
                    break;
                }
                catch (SocketException socketException)
                {
                    if (socket != null)
                    {
                        socket.Close();
                        socket = null;
                    }

                    exception = socketException;
                }
            }

            if (exception != null)
            {
                throw exception;
            }

            if (address.UseSsl)
            {
                SslSocket sslSocket = new SslSocket(socket);
                sslSocket.AuthenticateAsClient(
                    address.Host,
                    null,
                    noVerification ? SslVerification.NoVerification : SslVerification.VerifyPeer,
                    SslProtocols.Default);
                this.socketTransport = sslSocket;
            }
            else
            {
                this.socketTransport = socket;
            }
        }
コード例 #12
0
        public void Connect(Connection connection, Address address, bool noVerification)
        {
            var       ipHostEntry = Dns.GetHostEntry(address.Host);
            Exception exception   = null;
            TcpSocket socket      = null;

            foreach (var ipAddress in ipHostEntry.AddressList)
            {
                if (ipAddress == null)
                {
                    continue;
                }

                try
                {
                    socket = new TcpSocket();
                    socket.Connect(new IPEndPoint(ipAddress, address.Port));
                    exception = null;
                    break;
                }
                catch (SocketException socketException)
                {
                    if (socket != null)
                    {
                        socket.Close();
                        socket = null;
                    }

                    exception = socketException;
                }
            }

            if (exception != null)
            {
                throw exception;
            }

            if (address.UseSsl)
            {
                SslSocket sslSocket = new SslSocket(socket);
                sslSocket.AuthenticateAsClient(
                    address.Host,
                    null,
                    noVerification ? SslVerification.NoVerification : SslVerification.VerifyPeer,
                    SslProtocols.Default);
                this.socketTransport = sslSocket;
            }
            else
            {
                this.socketTransport = socket;
            }
        }
コード例 #13
0
        private void DoChat()
        {
            NetworkStream stream = null;

            try
            {
                byte[] buffer  = new byte[1024];
                string message = string.Empty;
                int    bytes   = 0;

                while (true)
                {
                    stream  = TcpSocket.GetStream();
                    bytes   = stream.Read(buffer, 0, buffer.Length);
                    message = Encoding.Unicode.GetString(buffer, 0, bytes);

                    if (OnReceived != null)
                    {
                        if (message.Substring(message.LastIndexOf("$") + 1) == "@")
                        {
                            OnReceived(message.Substring(0, message.LastIndexOf("$")), ClientList[TcpSocket].ToString(), true);
                        }
                        else
                        {
                            OnReceived(message.Substring(0, message.LastIndexOf("$")), ClientList[TcpSocket].ToString(), false);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (TcpSocket != null)
                {
                    if (OnDisconnected != null)
                    {
                        OnDisconnected(TcpSocket);
                    }

                    if (ThreadHandler.IsAlive == true)
                    {
                        ThreadHandler.Interrupt();
                        ThreadHandler.Abort();
                    }

                    TcpSocket.Close();
                    stream.Close();
                }
            }
        }
コード例 #14
0
        private void AbortConnection(TcpSocket socket, int statusCode, string message = null)
        {
            if (socket.Writable)
            {
                var messageBytes = string.IsNullOrEmpty(message) ? BufferData.EmptyBytes : Encoding.UTF8.GetBytes(message);
                var msg          = Encoding.UTF8.GetBytes(
                    "HTTP/1.1 " + statusCode + " " + HttpUtility.GetHttpStatus(statusCode) + "\r\n" +
                    "Connection: close\r\n" +
                    "Content-type: text/html\r\n" +
                    "Content-Length: " + messageBytes.Length + "\r\n" +
                    "\r\n");

                socket.Write(msg);
                socket.Write(messageBytes);
            }
            socket.Close();
        }
コード例 #15
0
        public async Task ConnectTest()
        {
            TcpListener listener = new TcpListener();

            listener.Listen(666);

            TcpSocket clientSock = new TcpSocket();
            await clientSock.ConnectAsync("localhost", PORT);

            var status = listener.Accept(out TcpSocket serverSock);

            Assert.AreEqual(status, SocketStatus.Done);
            Assert.NotNull(serverSock);

            listener.Stop();
            clientSock.Close();
            serverSock.Close();
        }
コード例 #16
0
        private void DoChat()
        {
            NetworkStream stream = null;

            try
            {
                byte[] buffer  = new byte[1024];
                string message = string.Empty;
                int    bytes   = 0;
                log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log_ChattingSystem.xml"));

                while (true)
                {
                    stream  = TcpSocket.GetStream();
                    bytes   = stream.Read(buffer, 0, buffer.Length);
                    message = Encoding.Unicode.GetString(buffer, 0, bytes);
                    logger.Info("Recv: " + message); //받은 메시지 원문 기록
                    message = message.Substring(0, message.LastIndexOf("$"));
                    if (OnReceived != null)
                    {
                        OnReceived(message, ClientList[TcpSocket].ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                if (TcpSocket != null)
                {
                    if (OnDisconnected != null)
                    {
                        OnDisconnected(TcpSocket);
                    }

                    if (ThreadHandler.IsAlive == true)
                    {
                        ThreadHandler.Interrupt();
                        ThreadHandler.Abort();
                    }

                    TcpSocket.Close();
                    stream.Close();
                }
            }
        }
コード例 #17
0
        /// <summary>
        /// Handle a HTTP Upgrade request.
        /// </summary>
        /// <param name="req"></param>
        /// <param name="conn"></param>
        public void HandleUpgrade(HttpServerRequest req, TcpSocket socket, ArraySegment <byte> head)
        {
            if (!socket.Readable || !socket.Writable)
            {
                socket.Destroy();
                return;
            }

            if (OnConnection == null)
            {
                AbortConnection(socket, 400);
                return;
            }

            var upgrade = req.Headers["upgrade"];
            var version = req.Headers["sec-websocket-version"];

            if ((version != "13" && version != "8") ||
                !string.Equals(upgrade, "websocket", StringComparison.InvariantCultureIgnoreCase))
            {
                socket.Write(Encoding.ASCII.GetBytes(
                                 "HTTP/1.1 400 Bad Request\r\n" +
                                 "Connection: close\r\n" +
                                 "Sec-WebSocket-Version: 13, 8\r\n"));
                socket.Close();
                return;
            }

            string acceptKey;

            using (var sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider()) {
                var key = req.Headers["sec-websocket-key"];
                acceptKey = Convert.ToBase64String(sha1.ComputeHash(Encoding.ASCII.GetBytes(key + GUID)));
            }

            socket.Write(Encoding.UTF8.GetBytes(
                             "HTTP/1.1 101 Switching Protocols\r\n" +
                             "Upgrade: websocket\r\n" +
                             "Connection: Upgrade\r\n" +
                             "Sec-WebSocket-Accept: " + acceptKey + "\r\n\r\n"));
            socket.Flush();

            OnConnection.Invoke(new WebSocket(socket, req, head));
        }
コード例 #18
0
        /// <summary>
        ///     Dispose.
        /// </summary>
        public void Dispose()
        {
            Task.Run(async() =>
            {
                // delay calling tcp connection close()
                // so that server have enough time to call close first.
                // This way we can push tcp Time_Wait to server side when possible.
                await Task.Delay(1000);
                proxyServer.UpdateServerConnectionCount(false);
                Stream.Dispose();

                try
                {
                    TcpSocket.Close();
                }
                catch
                {
                    // ignore
                }
            });
        }
コード例 #19
0
        static void Main()
        {
            var endpoint = new IPEndPoint(new IPAddress(new byte[] { 127, 0, 0, 1 }), 8081);

            uv_init();

            var watch = new PrepareWatcher(() => {
                //Console.WriteLine("Prepare Watcher Called");
            });

            watch.Start();
            var server = new TcpServer((socket) => {
                clientcount++;
                socket.Stream.Write(System.Text.Encoding.ASCII.GetBytes(clientcount.ToString()), 1);
                if (clientcount > 5)
                {
                    socket.Close();
                }
                Console.WriteLine("Client Connected");
                socket.Stream.OnRead += (data) => {
                    Console.WriteLine("Data Recieved: {0}", System.Text.Encoding.ASCII.GetString(data, 0, data.Length));
                    socket.Stream.Write(data, data.Length);
                };
                //socket.OnClose += () => {
                //	Console.WriteLine("Client Disconnected");
                //};
            });

            server.Listen(endpoint);
            var client = new TcpSocket();

            client.Connect(endpoint, () => {
                client.Stream.OnRead += (data) => {
                    Console.WriteLine("Client Recieved: {0}", System.Text.Encoding.ASCII.GetString(data, 0, data.Length));
                    watch.Stop();
                    watch.Dispose();
                    client.Close();
                };
                byte[] message = System.Text.Encoding.ASCII.GetBytes("Hello World\n");
                client.Stream.Write(message, message.Length);
            });
            var pipeserver = new PipeServer((socket) => {
                clientcount++;
                socket.Stream.Write(System.Text.Encoding.ASCII.GetBytes(clientcount.ToString()), 1);
                if (clientcount > 5)
                {
                    socket.Close();
                }
                Console.WriteLine("Pipe Client Connected");
                socket.Stream.OnRead += (data) => {
                    Console.WriteLine("Pipe Data Recieved: {0}", System.Text.Encoding.ASCII.GetString(data, 0, data.Length));
                    socket.Stream.Write(data, data.Length);
                };
                //socket.OnClose += () => {
                //	Console.WriteLine("Client Disconnected");
                //};
            });

            pipeserver.Listen("libuv-csharp");
            var pipeclient = new PipeSocket();

            pipeclient.Connect("libuv-csharp", () => {
                pipeclient.Stream.OnRead += (data) => {
                    Console.WriteLine("Pipe Client Recieved: {0}", System.Text.Encoding.ASCII.GetString(data, 0, data.Length));
                    watch.Stop();
                    watch.Dispose();
                    pipeclient.Close();
                };
                byte[] message = System.Text.Encoding.ASCII.GetBytes("Hello World\n");
                pipeclient.Stream.Write(message, message.Length);
            });
            var watch2 = new PrepareWatcher(() => {
                //Console.WriteLine("Prepare Watcher 2 Called");
            });

            watch2.Start();
            var check = new CheckWatcher(() => {
                //Console.WriteLine("Check Watcher Called");
            });

            check.Start();
            var idle = new IdleWatcher(() => {
                //Console.WriteLine("Idle Watcher Called");
            });

            idle.Start();
            var after = new TimerWatcher(new TimeSpan(0, 0, 5), new TimeSpan(1, 0, 0), () => {
                //Console.WriteLine("After 5 Seconds");
            });

            after.Start();
            var every = new TimerWatcher(new TimeSpan(0, 0, 5), () => {
                //Console.WriteLine("Every 5 Seconds");
                //	after.Stop();
            });

            every.Start();
            var cp = new ChildProcess("ls");

            cp.Spawn();
            uv_run();
        }
コード例 #20
0
 public void Close()
 {
     _socket.Close();
 }
コード例 #21
0
        private void DoChat()
        {
            NetworkStream stream = null;

            try
            {
                string message = string.Empty;

                while (true)
                {
                    stream = TcpSocket.GetStream();

                    byte[] sizeBuf = new byte[TcpSocket.ReceiveBufferSize];
                    stream.Read(sizeBuf, 0, (int)TcpSocket.ReceiveBufferSize);
                    int size = BitConverter.ToInt32(sizeBuf, 0);

                    MemoryStream ms = new MemoryStream();


                    while (size > 0)
                    {
                        byte[] buffer;
                        if (size < TcpSocket.ReceiveBufferSize)
                        {
                            buffer = new byte[size];
                        }
                        else
                        {
                            buffer = new byte[TcpSocket.ReceiveBufferSize];
                        }

                        int rec = stream.Read(buffer, 0, buffer.Length);

                        size -= rec;
                        ms.Write(buffer, 0, buffer.Length);
                    }
                    ms.Close();

                    byte[] data = ms.ToArray();

                    ms.Dispose();

                    message = Encoding.UTF8.GetString(data);
                    //MessageBox.Show(message);
                    serverEvent.ReceiveServerLog(message); //받은 메시지 원문 기록
                    OnReceived(message, ClientList[TcpSocket].ToString(), false);

                    /*
                     * if (OnReceived != null)
                     * {
                     *  if (message.Substring(message.LastIndexOf("$") + 1) == "@")
                     *      OnReceived(message.Substring(0, message.LastIndexOf("$")), ClientList[TcpSocket].ToString(), true);
                     *  else
                     *      ;
                     * }
                     * */
                }
            }
            catch (Exception ex)
            {
                serverEvent.ErrorLog("DoChat", ex.Message);
                if (TcpSocket != null)
                {
                    /*
                     * ServerSecurity Encrypted = new ServerSecurity();
                     *
                     *
                     * string Encrypted = Encrypt.EncryptedMessage(IpEndPoint.Address + ":" + IpEndPoint.Port + "/" + " 연결이 종료되었습니다."
                     *  , serverEvent.LocalIPAddress() + ":" + PortNum() + "/" + ClientList[TcpSocket].ToString());
                     * MessageBox.Show(Encrypted);
                     *
                     * OnReceived(Encrypted, ClientList[TcpSocket].ToString(), true);
                     * */
                    TcpSocket.Close();
                    stream.Close();
                    if (ThreadHandler.IsAlive == true)
                    {
                        ThreadHandler.Interrupt();
                        ThreadHandler.Abort();
                    }
                    if (OnDisconnected != null)
                    {
                        OnDisconnected(TcpSocket);
                    }
                }
            }
        }
コード例 #22
0
ファイル: Client.cs プロジェクト: leonchikk/netchat
 public void Close()
 {
     TcpSocket?.Close();
 }
コード例 #23
0
 public virtual void Close()
 {
     _tun.executeLwipTask(() => _socket.Close());
     Debug.WriteLine($"{TcpSocket.ConnectionCount()} connections now");
 }
コード例 #24
0
 public void TcpStop()
 {
     //enabled = false;
     tcpClient.Close();
     tcpRuning = false;
 }
コード例 #25
0
        public void Connect(Connection connection, Address address, bool noVerification)
        {
            var ipHostEntry = Dns.GetHostEntry(address.Host);
            Exception exception = null;
            TcpSocket socket = null;
            // reference to SSL socket, wrapper for above TCP socket
            SslSocket sslSocket = null;

            foreach (var ipAddress in ipHostEntry.AddressList)
            {
                if (ipAddress == null)
                {
                    continue;
                }

                try
                {
                    socket = new TcpSocket();
                    // SSL connection requested with an SSL host
                    if (address.UseSsl)
                    {
                        // wrap TCP socket to SSL socket
                        sslSocket = new SslSocket(socket, address.Host, ValidateCertificate);
                    }
                    socket.Connect(new IPEndPoint(ipAddress, address.Port));
                    exception = null;
                    break;
                }
                catch (SocketException socketException)
                {
                    if (address.UseSsl)
                    {
                        if (sslSocket != null)
                        {
                            sslSocket.Close();
                            sslSocket = null;
                        }
                    }

                    if (socket != null)
                    {
                        socket.Close();
                        socket = null;
                    }

                    exception = socketException;
                }
            }

            if (exception != null)
            {
                throw exception;
            }

            if (address.UseSsl)
            {
                this.socketTransport = sslSocket;
            }
            else
            {
                this.socketTransport = socket;
            }
        }
コード例 #26
0
        public void Connect(Connection connection, Address address, bool noVerification)
        {
            var       ipHostEntry = Dns.GetHostEntry(address.Host);
            Exception exception   = null;
            TcpSocket socket      = null;
            // reference to SSL socket, wrapper for above TCP socket
            SslSocket sslSocket = null;

            foreach (var ipAddress in ipHostEntry.AddressList)
            {
                if (ipAddress == null)
                {
                    continue;
                }

                try
                {
                    socket = new TcpSocket();
                    // SSL connection requested with an SSL host
                    if (address.UseSsl)
                    {
                        // wrap TCP socket to SSL socket
                        sslSocket = new SslSocket(socket, address.Host, ValidateCertificate);
                    }
                    socket.Connect(new IPEndPoint(ipAddress, address.Port));
                    exception = null;
                    break;
                }
                catch (SocketException socketException)
                {
                    if (address.UseSsl)
                    {
                        if (sslSocket != null)
                        {
                            sslSocket.Close();
                            sslSocket = null;
                        }
                    }

                    if (socket != null)
                    {
                        socket.Close();
                        socket = null;
                    }

                    exception = socketException;
                }
            }

            if (exception != null)
            {
                throw exception;
            }

            if (address.UseSsl)
            {
                this.socketTransport = sslSocket;
            }
            else
            {
                this.socketTransport = socket;
            }
        }
コード例 #27
0
ファイル: WebSocket.cs プロジェクト: tiwb/AngeIO
 private void HandleClose(int statusCode, string message)
 {
     Close((ushort)statusCode, message);
     _socket.Close();
 }