我正在为一个项目构建基于客户端/服务器的游戏(感觉非常深入)。我一直在使用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上使用它有什么好处?使用它也会缓冲吗?
提前致谢。
答案 0 :(得分:3)
这只是一种不同的风格。 ReceiveFrom
和SendTo
更像是Unix风格,使用StreamReader
更像是.NET风格。 StreamReader
对您更有用,因为您可以将其传递给接受TextReader
的其他方法。
答案 1 :(得分:0)
sendTo()
和receiveFrom()
用于连接较少的套接字,它使用UDP作为传输协议。使用面向连接或使用TCP作为协议的流套接字时,可以使用Send()
或Recieve()
。
StreamReader和StreamWriter是IO命名空间的类,有助于解决TCP套接字带来的消息边界问题。
消息边界问题意味着未在所有接收呼叫中接听所有发送呼叫
为了避免消息边界问题,我们使用带有streamreader和streamwriter的networkstream。