有關C#傳檔的問題 |
尚未結案
|
ashin0302
一般會員 發表:1 回覆:1 積分:0 註冊:2005-05-14 發送簡訊給我 |
想請問各位前輩傳檔能直接用clientsocket.Receive接收serversocket.Send的資料流嗎?因為我的client一直接不到傳出來的資料封包...
使用tcpClient.ReceiveBufferSize的話,它的buffer又太小了,還是有前輩知道能再增加大小嗎??因為最大只到8k...我要測試傳輸的檔案是10mb以上的... 希望大大能幫個忙指點一下...orz
************我的client端,server端已測過有丟出封包!!************
IPAddress serverIP = Dns.Resolve(serverHost).AddressList[0];
IPEndPoint server = new IPEndPoint(serverIP, 13);
Socket client = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
client.Connect(server); byte[] recvbytes = new byte[100000000];
int j = client.Receive(recvbytes, 0, client.Available, SocketFlags.None);
FileStream newfs = new FileStream (@"\test.wmv",FileMode.OpenOrCreate );
BinaryWriter bw = new BinaryWriter (newfs);
bw.Write (recvbytes); ps.若還是需要看server端程式,我再貼上server端程式...>"<
|
oddman
一般會員 發表:0 回覆:9 積分:1 註冊:2005-04-19 發送簡訊給我 |
Hi : 在MSDN上找到的資料
看看對你有沒有幫助(擷取部份文章內容).... TcpClient.ReceiveBufferSize 屬性 屬性值
接收緩衝區的大小,以位元組為單位。預設值是 8192 位元組。 備註
ReceiveBufferSize 屬性可以取得或設定您想為每一項讀取作業儲存於接收緩衝區的位元組數目。這個屬性實際操縱著配置用來接收輸入資料的網路緩衝區空間。 網路緩衝區至少應該和應用程式緩衝區一樣大,才能在呼叫 NetworkStream.Read 方法時確保所需的資料將可供使用。使用 ReceiveBufferSize 屬性來設定這個大小。如果您的應用程式將要接收大量資料,則應該傳遞非常大的應用程式緩衝區給 Read 方法。 如果網路緩衝區小於 Read 方法中要求的資料數量,您將無法在一次讀取作業中擷取所需的資料數量。這得要額外呼叫 Read 方法而徒增負荷。 [C#]
// sets the receive buffer size using the ReceiveBufferSize public property.
tcpClient.ReceiveBufferSize = 1024;
|
donken
一般會員 發表:9 回覆:7 積分:3 註冊:2005-07-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |