PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Unicode передача данных


Unicode передача данных

Сообщений 1 страница 6 из 6

1

Здравствуйте, есть клиент и сервер, (основа от торрента Петра) когда компилируешь в юникоде данные приходят и отправляются некорректно, изменял типы пакетов с l на u Добавлял флаг #PB_Unicode некоторым функциям, всё так же, подскажите что нужно изменить чтоб данные принимались и отправлялись нормально. заранее спасибо!!

0

2

Если отправляются текстовые строки, то нужно в функции SendNetworkString() указать флаг #PB_Ascii. При приеме, при чтении из буфера функцией PeekS() также нужно использовать этот флаг.

0

3

Пётр написал(а):

Если отправляются текстовые строки, то нужно в функции SendNetworkString() указать флаг #PB_Ascii. При приеме, при чтении из буфера функцией PeekS() также нужно использовать этот флаг.

Строки отправляются через SendNetworkData, поставил эти флаги для PeekS() стал приходить только первый символ строки.

0

4

Выложи код приема и передачи. Где-то в нем ошибка.

0

5

ну там код очень большой больше 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))

Пробовал ставить флаг, нормально не работает.

0

6

Если передается строка, то можно заменить

Код:
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)
Racer написал(а):

когда компилируешь в юникоде данные приходят и отправляются некорректно

Из этого не ясна суть проблемы. Данные приходят не все или искажены или еще что-то?

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Unicode передача данных