2011-05-31 53 views
0

我已經構建了一個使用「Winsock」工具的簡單項目。vb6中的winsock溢出問題

當我收到任何數據時,我把它放在一個變量中,因爲我不能將它放在文本框中,因爲 它是一個文件而不是文本。

但是,如果我發送一個大文件,它會給我一個錯誤。

「溢出」

有什麼辦法可以解決這個問題嗎?

+0

發送或接收數據時發生溢出嗎? – 2011-05-31 13:27:30

回答

0

VB可變長度字符串理論上只能有2GB的大小,它的實際最大大小取決於可用的虛擬內存,對於整個應用程序也限制爲2GB。但是,由於VB以unicode格式存儲字符串,這意味着它只能包含1GB的文本。

maximum length for string in VB6

如果這是你的問題,通過幾個字符串嘗試拆分輸入數據。

0

您是否在發送更多數據之前正確處理SendComplete事件?

否則,您將從WinSock控件中獲得緩衝區溢出。

+0

其實,我正在用vb6創建一個代理服務器。所以,我正在處理網站的服務器。 – faressoft 2011-05-31 09:03:24

0

您需要將您的數據拆分爲更小的數據包(每個數據包大約2-5k),然後分別發送每個數據包,然後在另一端重新構建數據包。您可以在數據末尾添加一個唯一的字符,以便接收端知道該傳輸的所有數據都已收到,例如Chr(0)

這是一個相當簡單的解決這個問題的方法 - 更好的方法是爲數據握手設計一個簡單的協議,以便知道每個數據包都已收到。