如何发送“hello”服务器并回复“嗨”?

使用我的代码,我可以在服务器上读取消息并从客户端写入。但我无法从服务器写入响应并在客户端中读取。
client
上的代码
var cli = new TcpClient();

cli.Connect("127.0.0.1", 6800);

string data = String.Empty;

using (var ns = cli.GetStream())
{
    using (var sw = new StreamWriter(ns))
    {
        sw.Write("Hello");
        sw.Flush();

        //using (var sr = new StreamReader(ns))
        //{
        //    data = sr.ReadToEnd();
        //}
    }
}

cli.Close();
server
上的代码
tcpListener = new TcpListener(IPAddress.Any, port);
tcpListener.Start();

while (run)
{
    var client = tcpListener.AcceptTcpClient();

    string data = String.Empty;

    using (var ns = client.GetStream())
    {
        using (var sr = new StreamReader(ns))
        {
            data = sr.ReadToEnd();

            //using (var sw = new StreamWriter(ns))
            //{
            //    sw.WriteLine("Hi");
            //    sw.Flush();
            //}
        }
    }
    client.Close();
}
如何在读取数据后让服务器回复并让客户端读取这些数据?     
已邀请:
因为你正在使用
TcpClient client = tcpListener.AcceptTcpClient();
,您可以直接回写客户端而无需自我识别。如果您使用
Stream.Read()
.ReadLine()
而不是
.ReadToEnd()
,您所拥有的代码将实际工作。
ReadToEnd()
将永久阻止网络流,直到流关闭。查看类似问题的答案,或者从MSDN,   ReadToEnd假定流   知道它什么时候结束了。对于   互动协议中的   服务器只在你问的时候发送数据   因为它并没有关闭   连接,ReadToEnd可能阻止   无限期,因为它没有到达   结束了,应该避免。 如果在一侧使用ReadLine(),则需要在另一侧使用WriteLine() - 而不是Write()。另一种方法是使用一个调用Stream.Read()的循环,直到没有东西可以读取。您可以在MSDN上的AcceptTcpClient()文档中查看服务器端的完整示例。相应的客户端示例位于TcpClient文档中。     
Cheesy,inneficient,但在一次性一次性计划中诀窍: 客户端:在流中,包括它希望从中接收响应的端口和IP地址。 客户端:为此创建一个侦听器 端口和IP。 服务器:读入端口/ IP信息和 依次连接,然后发送回复 流。 但是,这是一个很好的起点,请查看Sockets类以进行适当的双向通信。     

要回复问题请先登录注册