我正在尝试通过TCP Socket连接到第三方产品。我可以使用以下代码执行此操作(并成功发送消息):
if (isset($port) and ($socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) and (socket_connect($socket, $address , $port)))
{
$text="Connection successful on IP $address, port $port";
$data = "<msg id=1>text</msg>" . $newline;
socket_send($socket, $data, strlen($data), MSG_DONTROUTE);
$text .= socket_strerror(socket_last_error());
socket_close($socket);
}
缺点是我还需要监听这个套接字。据我了解,我首先需要绑定,而不是使用连接。当我运行下面的代码时,我在调用socket_bind
时出现此错误通常只允许使用每个套接字地址(协议/网络地址/端口)。
代码(来自TCP类的代码片段,我已经验证了两个代码段中的IP地址,端口等是相同的):
$this->Socket = socket_create(AF_INET, SOCK_STREAM, 0);
$result = socket_bind($this->Socket, $this->Host, $this->Port);
$result = socket_listen($this->Socket, 3) or die("Could not set up socket listener\n");
$spawn = socket_accept($this->Socket) or die("Could not accept incoming connection\n");
我如何使用socket_connect而不是socket_bind进行连接?如果我想在这个套接字上监听,我需要使用socket_bind吗?
我在Windows XP Apache安装(Zend)上运行PHP。我还要提一下,当我尝试执行此代码时运行的唯一其他应用程序是我尝试连接的第三方程序。
感谢您的任何见解。