3

我正在为一个项目构建一个基于客户端/服务器的游戏(感觉很深)。我一直在使用 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);

我想知道使用这个 overstreamReader 有什么好处?使用它也会缓冲吗?

提前致谢。

4

2 回答 2

3

这只是一种不同的风格。ReceiveFrom并且SendTo更像 Unix 风格,使用 aStreamReader更像是 .NET 风格。StreamReader对您来说会更有用,因为您可以将其传递给其他接受TextReader.

于 2010-03-25T18:36:57.410 回答
0

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

于 2017-10-09T09:31:45.287 回答