/ / Проблем с препълване с winsock в vb6 - vb6, winsock

Проблем с преливане с winsock в vb6 - vb6, winsock

Създадох прост проект, който използва инструмент "Winsock".

Когато получавам някакви данни, го поставям в променлива, защото не мога да го поставя в текстово поле, защото това е файл, а не текст.

Но ако изпратя голям файл, ще ме получи грешка.

"Препълване"

Има ли някакъв начин да се оправи този проблем?

Отговори:

0 за отговор № 1

Един низ на VB с променлива дължина може само на теорияРазмерът на 2 GB, действителният максимален размер зависи от наличната виртуална памет, която също е ограничена до 2 GB за цялото приложение. Но тъй като VB съхранява низ в формат unicode, това означава, че може да съдържа само 1 GB текст.

(максимална дължина за низ в VB6)

Ако това е вашият проблем, опитайте да разделите входящите данни по няколко низа.


0 за отговор № 2

Правилно ли обработвате събитието SendComplete, преди да изпратите повече данни?

В противен случай ще получите препълване на буфер от контролата на WinSock.


0 за отговор № 3

Трябва да разделите данните си на по-малки пакети(около 2-5k всеки трябва да го направи) и изпращайте всеки пакет поотделно, след което реконструирайте пакетите си в другия край. Можете да добавите уникален знак в края на данните, така че получаващият край да знае, че всички данни са получени за това предаване, например Chr(0)?

Това е доста опростено решение на този проблем - по-добър метод би бил да се създаде прост протокол за обмен на данни, така че да знаете, че всеки пакет е получен.