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();
我希望我明白你的需要。