Здравствуйте, есть клиент и сервер, (основа от торрента Петра) когда компилируешь в юникоде данные приходят и отправляются некорректно, изменял типы пакетов с l на u Добавлял флаг #PB_Unicode некоторым функциям, всё так же, подскажите что нужно изменить чтоб данные принимались и отправлялись нормально. заранее спасибо!!
Unicode передача данных
Сообщений 1 страница 6 из 6
Поделиться204.09.2014 22:23:44
Если отправляются текстовые строки, то нужно в функции SendNetworkString() указать флаг #PB_Ascii. При приеме, при чтении из буфера функцией PeekS() также нужно использовать этот флаг.
Поделиться305.09.2014 16:03:24
Если отправляются текстовые строки, то нужно в функции SendNetworkString() указать флаг #PB_Ascii. При приеме, при чтении из буфера функцией PeekS() также нужно использовать этот флаг.
Строки отправляются через SendNetworkData, поставил эти флаги для PeekS() стал приходить только первый символ строки.
Поделиться405.09.2014 17:02:40
Выложи код приема и передачи. Где-то в нем ошибка.
Поделиться505.09.2014 17:23:44
ну там код очень большой больше 2 тысяя строк, вот процедура передачи сервера:
Procedure NetworkSendString(NetworkSendStringConnection, NetworkSendStringString$) WinGrab_Packet_Data.WinGrab_Packet_Data WinGrab_Packet_Data\Packet_Header\Packet_Size = SizeOf(WinGrab_Packet) + StringByteLength(NetworkSendStringString$) WinGrab_Packet_Data\Packet_Header\Packet_Type = #WinGrab_Type_String SendNetworkData(NetworkSendStringConnection, @WinGrab_Packet_Data\Packet_Header, SizeOf(WinGrab_Packet)) SendNetworkData(NetworkSendStringConnection, @NetworkSendStringString$, StringByteLength(NetworkSendStringString$)) EndProcedure
А так принимает клиент:
ReceiveString$ = PeekS(@*Data\Buffer[0], *Data\Packet_Header\Packet_Size - OffsetOf(WinGrab_Packet_Data\Buffer))
Пробовал ставить флаг, нормально не работает.
Поделиться606.09.2014 10:00:21
Если передается строка, то можно заменить
SendNetworkData(NetworkSendStringConnection, @NetworkSendStringString$, StringByteLength(NetworkSendStringString$))
На.
SendNetworkString(NetworkSendStringConnection, NetworkSendStringString$, #PB_Ascii)
И принимать так.
ReceiveString$ = PeekS(@*Data\Buffer[0], *Data\Packet_Header\Packet_Size - OffsetOf(WinGrab_Packet_Data\Buffer), #PB_Ascii)
когда компилируешь в юникоде данные приходят и отправляются некорректно
Из этого не ясна суть проблемы. Данные приходят не все или искажены или еще что-то?