Обмен данными через сокеты - статья

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Ответить
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Обмен данными через сокеты - статья

Сообщение stikriz »

Вот, написал небольшую статью, пример клиента и сервера, а так же, компоненты точно как в Delphi.
Здесь статья и исходники:
http://narod.ru/disk/32181027001/Socket.7z.html
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Сразу вопрос: чем заменить под Linux модуль WinSock2 в исходнике пакета с компонентами?
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

У меня linux не стоит, но судя по всему, нужно найти куда идут вызовы из функций с префиксом fp - это должны быть кросплатформенные функции.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Linux Opensuse Lazarus 0.9.30.2 при установке UnComponents
(B/Socket/Library/UnTCPServer.pas(1,1) Fatal: Can't find unit WinSock2 used by UnTCPServer


Вам надо разграничить код для разных платформ с помощью ifdef

В линукс не доступны виндовые модули.
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Дело в том, что там используются имена классов, описанные в этом WinSock2, которых нет в других модулях. Они специфичны для Windows. Т.е. кроссплатформенность не обеспечена. :(
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

VirtUX писал(а):там используются имена классов, описанные в этом WinSock2

Нет никаких классов в WinSock2! Модуль Sockets должен быть кросплатформеным. Там нет нескольких функций, которые, однако, нужны, начинающиеся с WSA, например. У кого есть Linux, рекомендую поискать, например где лежит fpGetSockOpt, и откуда она дальше вызывает

Код: Выделить всё

function GetSockOpt(S,Level,OptName,OptVal,OptLen^)
Ответить