Работа с винсокетами.
CWICWEB, ClarioNET и пр.
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Гость
- StillZero
- Ветеран
- Сообщения: 458
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Поблагодарили: 1 раз
- Контактная информация:
1. символ 0 для CSTRING означает конец строки - ну это в курсе наверное
2. а принимаешь чем recvfrom()? длина мессаги = 0?
3. а обрабатываешь прием в цикле? или один раз делаешь recvfrom? надо в цикле
3. как вариант: кодируй его другим знаком, вернее последовательностью знаков, например "\\+", перед отправкой и декодирую обратно при приеме
Написал: PAA(27)
2. а принимаешь чем recvfrom()? длина мессаги = 0?
3. а обрабатываешь прием в цикле? или один раз делаешь recvfrom? надо в цикле
3. как вариант: кодируй его другим знаком, вернее последовательностью знаков, например "\\+", перед отправкой и декодирую обратно при приеме
Написал: PAA(27)
StillZero
Гость
- StillZero
- Ветеран
- Сообщения: 458
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Поблагодарили: 1 раз
- Контактная информация:
....не пробовал правда, но я думаю получится
Написал: PAA(27)
Код: Выделить всё
DataString STRING(нужный размер) ! строка данных
cstrData CSTRING(нужный размер+1) ! отсылаемая строка
code
DataString='bla bla...<0>...bla bla'
Len#=len(clip(DataString)) ! надо подумать насчет последнего символа <0>
! а вместо присвоения cstrData=DataString
memcpy(address(cstrData), address(DataString),Len#)
Err#=send(tcpSocket,address(cstrData),Len#,0) ! ну тут суть только
StillZero
Сообщение Гость »
Попробовала как вы предложили и все равно получила на другом конце только часть,которая стояла до <0>, остальное обрезалось.
Облом.
Мне тут предлагали делать через массив байт, но у меня все равно не получается или я что-то не так сделала.
Спасибо, вам Still Zero за помощь.
Анна.
Облом.
Мне тут предлагали делать через массив байт, но у меня все равно не получается или я что-то не так сделала.
Спасибо, вам Still Zero за помощь.
Анна.
Гость
Сообщение Гость »
Что-то вы, ребята, мудрите без меры 
гораздо проще нужно быть - просто наполнять CSTRING как байтовый массив, интерпретировать как байтовый массив и при работе не пользоватся функциями работы со строками (всякие CLIP и LEN).
Подготовили перед вызовом байтовый массив, хранящийся в переменной типа CSTRING (как того требует прототип API-функции), передали ее и количество байт в массиве (а не длину!!!) и вызывали API

гораздо проще нужно быть - просто наполнять CSTRING как байтовый массив, интерпретировать как байтовый массив и при работе не пользоватся функциями работы со строками (всякие CLIP и LEN).
Подготовили перед вызовом байтовый массив, хранящийся в переменной типа CSTRING (как того требует прототип API-функции), передали ее и количество байт в массиве (а не длину!!!) и вызывали API
Гость
Гость
Сообщение Гость »
Да что ж тут писать?
вот модификация:
в мапе:
s32_send(SOCKET,*CSTRING,SHORT,SHORT),SHORT,RAW,PASCAL,NAME('SEND'),DLL(dll_mode)
cstrData CSTRING(1024) ! отсылаемая строка
Len SHORT
code
cstrData='aaaa<0>bbbb'
Len = 9
! т.е. пересылаем 9 байт
UNLOCKTHREAD
Err#=s32_send(tcpSocket,address(cstrData),Len,0)
LOCKTHREAD
IF Err# <> Len
имеем проблемы с отправкой
END
вот модификация:
в мапе:
s32_send(SOCKET,*CSTRING,SHORT,SHORT),SHORT,RAW,PASCAL,NAME('SEND'),DLL(dll_mode)
cstrData CSTRING(1024) ! отсылаемая строка
Len SHORT
code
cstrData='aaaa<0>bbbb'
Len = 9
! т.е. пересылаем 9 байт
UNLOCKTHREAD
Err#=s32_send(tcpSocket,address(cstrData),Len,0)
LOCKTHREAD
IF Err# <> Len
имеем проблемы с отправкой
END
Гость
Гость
Вернуться в «CLARION for Internet»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)