PHP 到 Python TCP 套接字拒绝连接


PHP to Python TCP Socket refused connection

我正在尝试在同一硬件上的两个应用程序之间设置一个基本的TCP套接字。我已经在另一台笔记本电脑(充当服务器)和 python 脚本之间有一个工作套接字,但似乎无法让另一台工作。背景是我需要在笔记本电脑上运行用户界面,该笔记本电脑通过有线 LAN(无需互联网)链接到运行网络的 Rpi(这是用户界面的 python 脚本和 html 代码所在的位置)。我需要从 python 脚本中的用户界面访问用户输入,所以我将使用两个脚本(PHP 和 Python)之间的套接字来发送数据。Rpi已经充当了单独系统的客户端,数据通过其套接字愉快地进入。我打算在 PHP 脚本中创建新的套接字(我猜它后来变成了一个服务器),并在 Python 脚本中作为客户端从这个套接字读取。不幸的是它不起作用,我一直得到:

Traceback (most recent call last):
File "/var/www/Pipe_Sock_v3.py",line 33, in <module>
  tcpConfigSock.connect(ADDRCONFIG)
File "/usr/lib/python2.7/socket.py", line 224, in meth
  return getattr(self._sock,name)(*args)
error: [Errno 111] Connection refused

PHP 套接字创建代码如下:

$host = 'aaa.aaa.aaa.aaa'   #both PHP and python script at same IP address on Rpi
$port = 8000;
$sock = socket_create(AF_INET,SOCK_STREAM,0);
socket_bind($sock,$host,$port);
socket_listen($sock);
socket_accept($sock);

Python 代码(还包括现有的套接字代码):

HOST = 'bbb.bbb.bbb.bbb'    #IP address of system I am already getting data from.
HOSTCONFUG = 'aaa.aaa.aaa.aaa'  #Rpi IP Address
PORTCONFIG = 8000           #PHP socket port
BUFSIZCONFIG = 4092
ADDRCONFIG = (HOSTCONFIG,PORTCONFIG)   #PHP script link
PORTSYS = 6000              #existing system port
BUFSIZSYS = 4092
ADDRSYS = (HOST, PORTSYS)   #existing system link
tcpSysSock = socket(AF_INET, SOCK_STREAM)    #existing system socket
tcpConfigSock = socket(AF_INET, SOCK_STREAM) #non functioning PHP socket
tcpSysSock.connect(ADDRSYS)
tcpConfigSock.connect(ADDRCONFIG)

我已经查看了许多其他帖子,书籍并在网上搜索,但我似乎无法发现我哪里出错了。据我了解,只要为每个系统提供单独的套接字,TCP网络就可以在同一系统上与服务器和客户端一起运行。任何帮助将不胜感激,已经卡在这个上面一段时间了。

您的 PHP 代码缺少对socket_accept的调用:

socket_accept($sock);

如果没有socket_accept,php脚本将在socket_listen后退出,而无需等待客户端连接。