我应该将StreamReader / Writer与NetworkStream一起用于C#服务器/客户端吗?

时间:2010-03-25 18:34:39

标签: c# sockets networking tcp streamreader

我正在为一个项目构建基于客户端/服务器的游戏(感觉非常深入)。我一直在使用TCPclient和一个多线程套接字服务器。目前一切正常,但我一直在使用StreamReader和StreamWriter在客户端和服务器之间进行通信。

我一直在看这样的例子来收集数据:

byte[] data = new byte[1024];
int recv = sock.ReceiveFrom(data, ref ep);
string stringData = Encoding.ASCII.GetString(data, 0, recv);

这是发送:

byte[] data = Encoding.ASCII.GetBytes("This is a test message");
server.SendTo(data, iep);

我想知道在streamReader上使用它有什么好处?使用它也会缓冲吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

这只是一种不同的风格。 ReceiveFromSendTo更像是Unix风格,使用StreamReader更像是.NET风格。 StreamReader对您更有用,因为您可以将其传递给接受TextReader的其他方法。

答案 1 :(得分:0)

sendTo()receiveFrom()用于连接较少的套接字,它使用UDP作为传输协议。使用面向连接或使用TCP作为协议的流套接字时,可以使用Send()Recieve()
StreamReader和StreamWriter是IO命名空间的类,有助于解决TCP套接字带来的消息边界问题。
消息边界问题意味着未在所有接收呼叫中接听所有发送呼叫 为了避免消息边界问题,我们使用带有streamreader和streamwriter的networkstream。