[問題] 以Socket傳送固定大小資料??
大家好:
我需要寫一個專案,
由PDA端傳送多媒體檔案(JPG,WMV,WMA等).
Client端以TcpClient傳接資料,
Server以TcpListener聽是否有新連線進來,
每次進來就開一個新的TcpClient,
以上都沒問題.
接收端(Server)我採用
Me.tpc_TcpClient.GetStream.BeginRead(byte_ReadBuffer, 0, READ_BUFFER_SIZE,
AddressOf RecvMessage, Nothing)
不斷接收資料.
每個自訂封包有包含Header及Body,
Hearder裡有封包資訊(如檔案型態,長度,一個檔案被切成多少個封包..等等),
這樣接收端就可以知道是何種檔案傳送過來.
Body就用來放多媒體檔案的Binary Byte Array.
Header+Body固定長度2048 Bytes.
原本以為每次都送2048 Bytes,
接收端也會一次收到2048 Bytes資料(Buffer開的夠大).
但不幸的是,
接收端接收資料的大小都不一定.
有時五百多Bytes,
有時一千多Bytes.
我在每次Send資料的時候都有Sleep(100),
理論上有足夠時間讓Server完整接收才是.
且問我該如何才能接收固定大小的封包呢?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.71.83
推
06/25 23:55, , 1F
06/25 23:55, 1F
推
06/26 16:13, , 2F
06/26 16:13, 2F
→
06/26 16:13, , 3F
06/26 16:13, 3F
→
06/27 16:39, , 4F
06/27 16:39, 4F
→
06/27 16:40, , 5F
06/27 16:40, 5F
→
06/27 16:41, , 6F
06/27 16:41, 6F
推
06/29 03:28, , 7F
06/29 03:28, 7F
→
06/30 22:42, , 8F
06/30 22:42, 8F
→
06/30 22:42, , 9F
06/30 22:42, 9F
→
06/30 22:43, , 10F
06/30 22:43, 10F