C#从TcpClient读取流

我正在使用TcpClient和服务器制作服务器 – 客户端程序。

要从服务器发送我使用:

 static void send(string data) { sw.WriteLine(data + Environment.NewLine); } 

当客户端连接时,我发送一些文本:

 client = listener.AcceptTcpClient(); sr = new StreamReader(client.GetStream()); sw = new StreamWriter(client.GetStream()); string line; try { send("Hello world"); } //More code 

并从客户端阅读:

 string data; data = sr.ReadLine(); if(data != string.Empty || data != null) { MessageBox.Show(data); } 

我尝试放入内部(真实)并且它冻结了,我尝试放入计时器滴答圈并冻结…

我该如何解决?

PS:客户端和服务器是2个不同的项目。

我相信你需要这样的东西:

 try { listen = new TcpListener(myAddress, port); listen.Start(); Byte[] bytes; while (true) { TcpClient client = listen.AcceptTcpClient(); NetworkStream ns = client.GetStream(); if(client.ReceiveBufferSize > 0){ bytes = new byte[client.ReceiveBufferSize]; ns.Read(bytes, 0, client.ReceiveBufferSize); string msg = Encoding.ASCII.GetString(bytes); //the message incoming MessageBox.Show(msg); } } } catch(Exception e) { //e } 

然后将此代码作为后台线程:

 Thread thread = new Thread(the functions name); thread.IsBackground = true; thread.Start(); 

我希望我明白你的需要。