Здравствуйте. Помогите советом, пожалуйста.
Удалённо: ПЛК - Роутер - (Инет) - Роутер - СерверАпач = Передача и прием работает.
Напрямую: ПЛК - СерверАпач = Постоянный ретрансмишн и до HTTP дело не доходит.
----------------------Wireshark--------------
172252 2513.393191 192.168.1.100 192.168.1.155 TCP 60 452 → 9908 [SYN] Seq=0 Win=512 Len=0
171975 2510.079455 192.168.1.100 192.168.1.155 TCP 60 [TCP Retransmission] 451 → 9908 [SYN] Seq=0 Win=512 Len=0
---------------------
Код взят с этого сайта:
PHP код:
network_counter:=network_counter+1;
IF network_counter > http_period THEN
network_counter:=0;
IF network_status <> 0 THEN
network_time_out:=network_time_out+1; (* счетчик таймаутов *)
out5:=FALSE;(*лампа связь выкл*)
END_IF
network_status:=1;
connect_counter:=0;
srv_adr.sin_addr:=IP_srv_16;
srv_adr.sin_family:=SOCKET_AF_INET;
srv_adr.sin_port:=STRING_TO_INT(PORT_srv_str);
IF sock>0 THEN SysSockClose(sock); END_IF;
END_IF
CASE network_status OF
1: (* создаём сокет *)
sock := SysSockCreate(SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP);
IF sock<>16#FFFFFFFF THEN
network_status:=2;
SysSockIoctl(sock,SOCKET_FIONBIO,ADR(param_ctrl));
END_IF
2: (* коннектимся и сидим в этой ветке пару секунд пока не пройдёт коннект *)
IF connect_counter = 0 THEN
SysSockConnect(sock, ADR(srv_adr), SIZEOF(srv_adr));
END_IF;
connect_counter:=connect_counter+1;
IF connect_counter > connect_pause THEN
connect_counter:=0;
network_status:=3;
END_IF
3: (* посылаем запрос *)
GenPost(GenOutStringEnc());
sz_http_post_out:= LEN_string(http_post_out);
SysSockSend(sock, ADR(http_post_out),sz_http_post_out, SOCKET_MSG_OOB);
network_status:=4;
4: (* читаем сокет пока не встретим END *)
byte_r:=SysSockRecv(sock, ADR(http_otvet), 512, SOCKET_MSG_OOB);
IF FIND(http_otvet, 'END' ) > 0 THEN (* нашли END значит всё ок, ответ получили *)
network_status:=0;
http_otvet_prev:=http_otvet; (* сюда сохраняем ответ здесь будет блок его обработки*)
Explode(http_otvet_prev,15);
Command_executor();
out5:=TRUE;(*лампа связь есть вкл*)
p:=ADR(http_otvet);
FOR i:=0 TO 511 DO
p1:=p+i;
p1^:=0;
END_FOR
END_IF
END_CASE
RETURN;