wysyłanie danych do pythona

0

Próbuje wysłać dane do mikrokntrolera :
Czy jest możliwość otworzenia socektów po obu stronach .

<?php

$host = "192.168.0.107";
$port = 80;

$output="datatatatatatta" ;

$socket1 = socket_create(AF_INET, SOCK_STREAM,0) or die("Could not create socket\n");

socket_connect ($socket1 , $host,$port ) ;

socket_write($socket1, $output, strlen ($output)) or die("Could not write output\n");

socket_close($socket1) ;
?>

I niestety otrzymuje takie błędy . Jak to naprawić ?

screenshot-20191220183513.png

0

Rozumiem, że po stronie micropythona masz postawiony serwer socketowy, który nasłuchuje na porcie 80? Jeżeli tak, to pokaż kod.

0

Jakiś poroniony ten kodzik, ci powiem. W ogóle nie powinien działać, powinien rzucać wyjątkiem. Patrzysz jakoś na porcie szeregowym, co ci tam wypluwa?

TCPSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# tutaj bind oczekuje krotki (str, int),
# czyli powinno być bind(('192.168.0.101', 80))
# pomijając już to, że w PHP próbujesz się połączyć z innym adresem
TCPSock.bind(192.168.0.101, 80)
TCPSock.listen()

while True:
  TCPSock.accept() # accept zwraca krotkę (socket, addr) i na tym zwróconym sockecie powinieneś operować
  addr = TCPSock.recvfrom(1024)
  while data:
    print(data)
    data, addr = TCPSock.recvfrom(1024)
    print("All Data Received") # Will execute when all data is received 
    TCPSock.close()
    break

Spróbuj tak:

import socket

tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_sock.bind(('0.0.0.0', 80))
tcp_sock.listen(5)

while True:
  sock, addr = tcp_sock.accept()
  print('incoming connection from {}'.format(addr))

  data = sock.recv(1024)
  while data:
    print(data)
    data = sock.recv(1024)
    sock.close()
    break

1 użytkowników online, w tym zalogowanych: 0, gości: 1