winsock и порт > 32000 | |
---|---|
Василий Автор Сообщений: 682 Откуда: Москва Дата регистрации: 19.10.2000 |
Добрый день
Возникла задача работать с ФР через сокет Нашел в решениях замечательный класс от Влада Колосова для решения этой проблемы. Он отлично работал до того момента пока порт для подключения не превысил значения 32000. Подскажите знающие люди как исправить код чтобы можно было работать с портом боле 32000 метод подключения
тупо поменять строку cBuf = BINTOC(AF_INET,'2SR') + BINTOC(nPort,'2S') + cBinIP + REPLICATE(CHR(0),8) на cBuf = BINTOC(AF_INET,'2SR') + BINTOC(nPort,'4S') + cBinIP + REPLICATE(CHR(0),8) эффекта не дало. Что еще требуется изменить в коде. |
Re: winsock и порт > 32000 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Для unsigned short (каковым должен быть номер порта в структуре) подойдёт выражение
BINTOC(m.nPort-32768,'2') Параметры функции BINTOC в фоксе несколько неочевидны... В частности она ВСЕГДА трактует передаваемые ей числа как знаковые, а модификатор 'S' просто инвертирует старший (знаковый) бит в получаемом наборе байт. ------------------ WBR, Igor |
Re: winsock и порт > 32000 | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Можно еще правую часть брать от 4S:
? 0h + BINTOC(33000-32768,'2') ? 0h + RIGHT(BINTOC(33000,'4S'),2) |
© 2000-2024 Fox Club  |