Показано с 1 по 2 из 2

Тема: ПЛК100 - TCP Server

  1. #1

    По умолчанию ПЛК100 - TCP Server

    Здравствуйте.
    Может быть этот вопрос уже поднимался, но я никак не могу найти решение.

    Написал простой сервер на ПЛК. К нему нормально все подсоеденяются, отсылаются и принимаются сообщния, но только первые несколько секунд. Потом связь теряется , примерно через одинаковое время. Как будто по таймуту, хотя нигде ничего не прописано. Вот код:

    CASE s_state OF
    SS_INIT:

    FOR i := 1 TO 10 DO
    SysSockClose( i );
    END_FOR

    sock:=SysSockCreate( SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP );
    IF sock = 16#FFFFFFFF THEN
    s_state := SS_INIT;
    RETURN;
    END_IF
    s_state := SS_OPEN;

    SS_OPEN:
    tcp_adr.sin_family:=SOCKET_AF_INET;
    tcp_adr.sin_port := port;
    tcp_adr.sin_addr:=SOCKET_INADDR_ANY;
    paddr:=ADR(tcp_adr);
    res:=SysSockBind(sock,paddr,SIZEOF(tcp_adr));
    res:=SysSockListen( sock, 1 );
    paddr:=ADR( accept_adr );
    sock_acc := sock;
    param_ctrl:=1;
    SysSockIoctl( sock_acc, SOCKET_FIONBIO, ADR( param_ctrl ) );
    s_state := SS_RCV;
    RETURN;


    SS_RCV:
    rcv_buf_cnt := SysSockRecv( sock_acc, ADR( ByteBuffer ), 130, SOCKET_MSG_OOB );

    IF rcv_buf_cnt = 16#FFFFFFFF OR rcv_buf_cnt = 0 THEN
    RETURN;
    END_IF

    FOR i := 0 TO rcv_buf_cnt - 1 DO
    tmp_ptr := ADR( ByteBuffer[ i ] );
    StringBuffer := CONCAT( StringBuffer, LEFT( tmp_ptr^ , 1 ) );
    IF LEN( StringBuffer ) > 254 THEN
    StringBuffer := DELETE( StringBuffer, 1, 1 );
    END_IF
    END_FOR


    SendBuffer := CONCAT( 'Recive messager', StringBuffer );


    StringBuffer := '';

    s_state := SS_SEND;


    SS_SEND:

    send_buf_cnt := SysSockSend( sock_acc, ADR( SendBuffer ), LEN( SendBuffer ), 0 );

    SendBuffer := '';

    s_state := SS_RCV;

    END_CASE

    Подскажите, где может быть ошибка

  2. #2

    По умолчанию

    и еще момент, если его постоянно опрашивать то связь держиться

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •