2014-03-19 54 views
1

我無法通過winsock發送propertybag。我有一個通過使用propertybag發送圖像的客戶端/服務器應用程序。我將propertybag轉換成一個字節數組,並嘗試通過winsock發送它,然後當我將字節數組轉換回propertybag時,它看起來似乎不能讀取它。看起來數據在發送時已損壞。通過winsock發送包?

客戶端(發送屬性包)

Dim pb As PropertyBag 
Dim byt() As Byte 

Set pb = New PropertyBag 

pb.WriteProperty "picc", Image1.Picture 
byt = pb.Contents 

Winsock1.SendData byt 

服務器(接收的PropertyBag)

Dim byt() As Byte 
    Dim pb As PropertyBag 

    Set pb = New PropertyBag 

    Winsock1.GetData byt, vbByte 

    pb.Contents = byt 
    Image1.Picture = pb.ReadProperty("picc") 

我收到的錯誤:

Run-time error '327': 
Data value named 'picc' not found 

當我嘗試在沒有winsock的單個程序中執行代碼時,它工作得很好。當我通過winsock發送字節數組時發生問題。 >參考 -

+1

我會寫字節數組(發送和接收)到一個文件並比較差異 – Hrqls

+0

一個'SendData'調用不能通過一個'GetData'調用可靠地接收。這是「數據包謬誤」。您不會在用戶定義的「數據包」中發送數據,而是發送流片段並接收長度不相同的流片段(並且每個數據到達事件的長度可能小至1個字節)。 TCP不是數據報協議。 – Bob77

回答