我正在尝试使用PHP向Python套接字发送消息并打印消息。
到目前为止,这是PHP代码:
<?
$host = "localhost";
$port = 12345;
$f = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($f, SOL_SOCKET, SO_SNDTIMEO, array('sec' => 1, 'usec' => 500000));
$s = socket_connect($f, $host, $port);
$msg = "message";
$len = strlen($msg);
socket_sendto($f, $msg, $len, 0, $host, $port);
socket_close($f);
?>
这是Python的一个:
#!/usr/bin/python
# encoding: utf-8
import socket
s = socket.socket()
host = "localhost"
port = 12345
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
print s.recv(1024)
c.close()
但我收到以下错误:
Traceback (most recent call last):
File "server.py", line 15, in <module>
print s.recv(1024)
socket.error: [Errno 107] Transport endpoint is not connected
我也尝试使用socket_sendmsg
,socket_write
,fwrite
等等,但Python中的错误始终相同,socket.error: [Errno 107] Transport endpoint is not connected
。
看起来我真的迷路了。
有人可以帮助我吗?
感谢。
答案 0 :(得分:4)
尝试以下方法:
import socket
s = socket.socket()
host = "localhost"
port = 12345
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
data = c.recv(1024)
if data: print data
c.close()
主要问题是,当代码应该在s.recv()
上时,您的代码正在调用c.recv()
。另外,请确保在打印前检查收到的数据(是None
?)。