0

您将在下面找到我的代码。问题是,这应该是一个“客户端聊天”程序,因此您可以不断发送消息。但是,不知何故,该应用程序被 console.readline() 阻止,因此提示用户只输入一次消息。有什么解决方法吗?可能正在使用预定义的读取缓冲区?

static void Main(string[] args)
        {
            TcpClient client = new TcpClient("127.0.0.1", 7777);

            try
            {
                Stream s = client.GetStream();
                StreamReader sr = new StreamReader(s);
                StreamWriter sw = new StreamWriter(s);
                sw.AutoFlush = true;
                //Console.WriteLine(sr.ReadLine());

                while (true)
                {
                    Console.Write("Message: ");
                    string msg = Console.ReadLine();
                    sw.WriteLine(msg);
                    if (msg == "chao") break;
                    Console.WriteLine(sr.ReadLine());
                }

                s.Close();
            }
            finally
            {
                client.Close();
            }
        }
4

2 回答 2

0

sr.readline 防止在控制台上输入数据?

正确的。它一直阻塞,直到从对等方收到一条线路。

于 2013-05-22T01:34:10.097 回答
0

我知道这不是您问题的直接答案,但如果您阅读过 Stephen Cleary 的 TCP/IP .Net 套接字常见问题解答,您将获得大量有关使用 .NET 套接字的信息。

http://blog.stephencleary.com/2009/04/tcpip-net-sockets-faq.html

于 2013-05-21T22:44:24.157 回答