2010-03-25 57 views
2

我正在爲一個項目構建基於客戶/服務器的遊戲(感覺我的深度)。我一直在使用TCPclient和一個多線程套接字服務器。目前一切正常,但我一直在使用StreamReader和StreamWriter在客戶端和服務器之間進行通信。我應該使用StreamReader/Writer和NetworkStream進行C#服務器/客戶端嗎?

我保持這樣的例子看到了recieving數據:

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的好處是什麼?將使用這也緩衝?

在此先感謝。

回答

3

這只是一種不同的風格。 ReceiveFromSendTo更適合Unix風格,並且使用StreamReader更適合.NET風格。 StreamReader會對你更有用,因爲你可以將它傳遞給接受TextReader的其他方法。

+0

謝謝你的回覆。我將堅持streamReader,但想知道它是否提供緩衝? – SlowForce 2010-03-27 10:40:57

+0

我不知道它是否增加了緩衝。我對此表示懷疑。但是,底層流肯定會緩衝網絡流量。 – 2010-03-27 13:34:11

0

sendTo()receiveFrom()用於連接較少的套接字,使用UDP作爲傳輸協議。在使用TCP作爲協議的面向連接或流套接字時,您可以使用Send()Recieve()
StreamReader和StreamWriter是IO名稱空間的類,它將有助於解決TCP套接字附帶的消息邊界問題。
消息邊界問題意味着所有的發送呼叫都不會在所有的接收呼叫中被接收。
爲了避免消息邊界問題,我們使用networkstream與streamreader和streamwriter。

相關問題