在同一台计算机上测试客户端-服务器

testing client- server on the same computer

我正在尝试使用 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"))

您的代码将无法与 python 2.* 一起使用,因为 [=26] 中 input()raw_input()bytes 等的差异=] 3.* 对比 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,则应在 python 2.6 或更高版本中使用 bytesarray。检查这个:the bytes type in python 2.7 and PEP-358