WinSock и типы данных
Есть такая вот ситуация: используется компонент WinSock и через протокол UPD передаётся строка. Проблема в том, что принимающая программа не понимает что ей пришло и выдаёт лишь кучку вопросительных знаков (кстати, воп.знаков столько же, сколько символов в отправленной строке). Вряд ли это несоответствие кодировок, ведь передаю строку из латиницы и цифр. Что же с этим счастьем делать? Переменная, в которую записываю пришедшие данные, заранее определена как String
Попробуй вместе с данными отправлять какую-нить контрольную сумму, которая будет вычисляться как сумма ascii кодов всех символов строки, и при получении сверять. Типа:
summ=0
for x=1 to len(stroka)
summ=summ + asc(mid$(stroka,x,1))
next x
stroka=summ & "|" & stroka
winsock1.senddata stroka
а при получении выделяем сумму из строки:
q= InStr(1, сstroka, "|") 'ищем первый символ разделителя
summ=val(mid$(сstroka,1,q-1))
сstroka=mid$(сstroka,q+1)
'такая же проверка суммы
сsumm=0
for x=1 to len(cstroka)
сsumm=сsumm + asc(mid$(сstroka,x,1))
next x
'и сверка двух сумм
тогда будешь точно уверен, что получил, то, что отправил
updConnection.GetData strBuff, vbString
Вот именно про последнее, про vbString я до некоторых пор не знал :) Теперь всё работает, всё красиво.
А насчёт TCP, то ни чуть не проще, ведь надо прописывать разные действия для сервера и для клиента, а UDP избавляет от этого. Тем более, что я пишу всего-лишь сетевуй игрушку и особой надёжности тут не требуется.