PDA

Просмотр полной версии : Проблема с TCP ф Connect



AndyWasHere
03.02.2010, 09:36
Добрый день, форумчане =) разбираюсь с сокетами в ПЛК 100. по поиску шарился, ответа не нашел =(

делаю TCP клиента. сервер на PC. вот такой фрагмент: создаем сокет, садим его на порт (эти операции проходят нормально). затем пытаемся делать connect. но стороне сервера запрос появляется, сервер делает accept, но ПЛК этот ответ сервера не видит и возвращает FALSE (connectok=FALSE).

собственно код. никакого другого кода в ПЛК не грузится



IF desc<=0 THEN

desc:=SysSockCreate(SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP);

sockaddr. sin_family:=SOCKET_AF_INET;
sockaddr.sin_port:=100;
sockaddr.sin_addr:=0;

A:=SysSockBind (desc,ADR(sockaddr), SIZEOF(sockaddr));

ELSIF (NOT connectok) THEN

sockaddr. sin_family:=SOCKET_AF_INET;
sockaddr.sin_port:=22000;

{192.168.0.37}
sockaddr.sin_addr:=((192*256+168)*256+0)*256+37;

connectok:=SysSockConnect(desc, ADR(sockaddr), SIZEOF(sockaddr));

ELSIF connectok THEN

datatosend:='DATA_FROM_PLC';

SysSockSend (desc, ADR(datatosend), SIZEOF(datatosend), 0);

END_IF;

к сожелению в тему гляну только завтра утром (на ДВ уже вечер), поэтому ответить на возникшие вопросы не смогу. но буду рад любому предположению, т.к. уже моск сломал =\

заранее спасибо

Филоненко Владислав
03.02.2010, 15:26
FALSE==0 - абсолютно ликвидное значение. Возвращается (-1) в сл. ошибки или desc в случае успеха.

AndyWasHere
04.02.2010, 08:22
речь идет о функции SysSockConnect. она возвращает boolean