#python #php #sockets
Вопрос:
Я пытаюсь подключить сервер сокетов python к php.
Я попробовал этот код:
$host = gethostname();
$port = 12345;
// No Timeout
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
$result = socket_connect($socket, $host, $port) or die("Could not connect toservern");
socket_write($socket, "Hello Server", strlen($message)) or die("Could not send data to servern");
$result = socket_read ($socket, 1024) or die("Could not read server responsen");
echo "Reply From Server :".$resu<
socket_close($socket);
Это коды сервера сокетов python:
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print ("Got connection from {}", addr)
c.send("Thank you for connecting".encode())
c.close() # Close the connection
Он получает эту ошибку, когда я пытаюсь:
Warning: socket_connect(): unable to connect [10061]: No connection could be made because the target machine actively refused it.
Я также отключил брандмауэр, так как он, возможно, блокирует соединение. Но мне это не помогло. Так что, похоже, дело не в брандмауэре.
Я запускаю веб-приложение php в Windows 10 с сервером wamp.Сервер сокетов(python) и клиент (php) работают локально (Windows 10-та же машина).
Что я могу сделать, чтобы решить эту проблему?
Спасибо
Комментарии:
1. После запуска сервера сокетов проверьте
12345
, запущен ли порт, используяnetstat -a -b
командную строку. Если он не запущен, измените хост наlocalhost
или обратный ip127.0.0.1
-адрес или локальный ip192.168.x.x
-адрес и перезапустите сервер, убедитесь, что порт запущен. Как только он покажет, что порт запущен и находится в режиме прослушивания, вы сможете подключиться к этому серверу сокетов. Не забудьте также сменить хост на стороне клиента