请教各位一个关于C# tcp接收数据的问题
本人是一个新手,在学习用C#写聊天软件时遇到了个疑问:当服务端接受一个TcpClient客户端后,可以获得一个NetworkStream,在接收数据时可以对流进行读的操作没错吧,
但是我现在想这样:
就好像QQ,一个连接完成后,在不断开的情况下,只要一接收到流(主要是字符串),就将它转为string并显示在TextBox上。可问题是怎样才能让它做到这样,我记得COM组件Winsock有一个DataArrival事件 是在有数据交换时触发(记得不是太清楚),可以在这个事件下给文本框赋值。但C#里好像没有类似的事件...难道是NetworkStream的read方法一直在接受流而没有停止过?如果是这样的话,怎样把他收到的流立刻处理?用一个循环?多线程?
各位大虾帮帮小弟,如果能给个样本源码(最好带注释)给小弟我研究下最好
程序代码:
using System; using System.Collections.Generic; using System.Text; using using System.Threading; using namespace tcp_server { class Program { public static TcpListener server = null; public static TcpClient newClient = null; public static NetworkStream ns = null; public static StreamReader sRead = null; static void Main(string[] args) { server = new TcpListener(7300); server.Start(); while (true) { newClient = server.AcceptTcpClient(); Console.WriteLine("有新的连接"); ns = newClient.GetStream(); sRead = new StreamReader(ns); Console.Write(sRead.ReadToEnd()); /*这只能显示一次,当过程走过后,就不会显示 * 可能收到耶不会处理,我要他像QQ一样即时处理 * 我就是想只要他又数据就给我显示出来 * 请问各位大虾应该怎么写啊? * 本人新手 */ } } } }