我正在尝试使用python在笔记本电脑上测试套接字通信。但是,我不确定为什么没有建立连接?我不断收到目标机器主动拒绝连接的错误。我试图使用同一台计算机来运行客户端和服务器部分。服务器运行正常,但客户端是没有连接的客户端。我想我的主机名错了(127.0.0.1)但不确定我应该使用什么?我还尝试将服务器主机名更改为(0.0.0.0)以及客户端要连接的主机名的IPV4地址,但这也没有用。任何帮助将不胜感激!
我的代码(服务器部分):
import socket
comms_socket =socket.socket()
comms_socket.bind(('127.0.0.1', 50000))
comms_socket.listen(10)
connection, address = comms_socket.accept()
while True:
print(connection.recv(4096).decode("UTF-8"))
send_data = input("Reply: ")
connection.send(bytes(send_data, "UTF-8"))
客户端部分:
import socket
comms_socket = socket.socket()
comms_socket.connect(('127.0.0.1',50000))
while True:
send_data = input("Message: ")
comms_socket.send(bytes(send_data, "UTF-8"))
print(comms_socket.recv(4096).decode("UTF-8"))
答案 0 :(得分:0)
你的代码不能使用python 2. *,因为python 3中的input()
,raw_input()
,bytes
等有所不同。* vs python 2 。*。您必须尽可能少地进行以下更改才能使用python 2. *。否则,使用python 3运行代码:
服务器程序:
import socket
comms_socket =socket.socket()
comms_socket.bind(('127.0.0.1', 7000))
comms_socket.listen(10)
connection, address = comms_socket.accept()
while True:
print(connection.recv(4096).decode("UTF-8"))
send_data = raw_input("Reply: ") # Use raw_input() instead of input()
connection.send(send_data.encode("UTF-8"))
客户计划:
import socket
comms_socket = socket.socket()
comms_socket.connect(('127.0.0.1',7000))
while True:
send_data = raw_input("Message: ")
comms_socket.send(send_data.encode("UTF-8"))
print(comms_socket.recv(4096).decode("UTF-8"))
如果要在特定用例中使用bytes
,则应在{2.6}或更高版本中使用bytesarray
。检查一下:the bytes type in python 2.7 and PEP-358