Я пытаюсь отправить данные непрерывно из клиентского сокета python в сокет php-сервера, я смог отправить данные один раз и распечатать его. Но если я помещу сервер в цикл while, чтобы продолжать слушать, данные, которые он получает, больше не распечатываются. Он по-прежнему отвечает клиенту, если я верну ему что-то.Ячейка сервера Php, получающая непрерывные данные из клиентского сокета python
клиентский код Python (это будет введен в функцию, которая вызывается каждый раз, когда я отправить что-то):
import socket
import sys
def main():
host = 'localhost'
port = 5003 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print >> sys.stderr, 'connecting to %s port %s' % (host, port)
s.connect((host, port))
s.sendall("Hello! Heartbeat 40!")
data = s.recv(1024)
s.close()
print('Received', repr(data))
if __name__ == "__main__":
main()
код сервера Php:
<!DOCTYPE html>
<html>
<body>
<?php
// set some variables
$host = "127.0.0.1";
$port = 5003;
// don't timeout!
set_time_limit(0);
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n");
while(true){
// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
// read client input
$input = socket_read($spawn, 1024) or die("Could not read input\n");
// clean up input string
$input = trim($input);
echo "Client Message : ".$input;
// socket_close($spawn);
}
socket_close($socket);
?>
</body>
</html>
Blew О, я сейчас понимаю. Но я пытаюсь отправить сердцебиение на сервер, который я хочу обновлять на экране каждый раз, когда я его отправляю. Это можно сделать с помощью сокетов? – user3801533
Конечно, но это не тривиально в PHP, так как у вас есть промежуточный веб-сервер. Я wold рекомендую что-то javascriptish как http://socket.io. Единственное, что вам нужно, это понять его ограничения. Другой вариант - использовать периодические тяги. В любом случае вам нужно ajax js на clientide, чтобы постоянно обновлять страницу без перезагрузки. –