public void TestTcpConnWriteAfterClose() { var tcpListener = new TcpListener(IPAddress.Loopback, 4193); tcpListener.Start(); var wg = new WaitGroup(); wg.Add(1); GoFunc.Run(() => { var tcpClient = tcpListener.AcceptTcpClient(); using (var rdr = new BinaryReader(tcpClient.GetStream())) using (var connw = new BinaryWriter(tcpClient.GetStream())) { while (true) { var readMsg = ReadBytes(rdr, (byte)'\n'); if (readMsg.SequenceEqual(Encoding.UTF8.GetBytes("QUIT\n"))) { break; } connw.Write(readMsg); } } tcpClient.Close(); wg.Done(); }, "TcpConnTest read loop"); var tcpConn = new TcpConn(IPAddress.Loopback.ToString(), 4193); var helloMsg = Encoding.UTF8.GetBytes("Hello\n"); tcpConn.Write(helloMsg, 0, helloMsg.Length); var recv = new byte[helloMsg.Length]; tcpConn.Read(recv); Console.WriteLine(Encoding.UTF8.GetString(recv)); var quitMsg = Encoding.UTF8.GetBytes("QUIT\n"); tcpConn.Write(quitMsg, 0, quitMsg.Length); recv = new byte[quitMsg.Length]; tcpConn.Read(recv); Console.WriteLine(Encoding.UTF8.GetString(recv)); wg.Wait(); tcpConn.Close(); Assert.Throws <ConnectionClosedException>(() => tcpConn.Write(quitMsg, 0, quitMsg.Length)); }
private void CloseConn(TcpConn conn) { if (conn.stream != null) { conn.stream.Close(); } if (conn.client != null) { conn.client.Close(); } }
private void CloseConn(TcpConn conn) { new Thread(delegate() { try { if (conn.stream != null) { conn.stream.Close(); } if (conn.client != null) { conn.client.Close(); } } catch (Exception) { } }).Start(); }
public GateCli() { handler = (HandlerI) new Handler(); codec = (CodecI) new Codec(); conn = new TcpConn(handler); }