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

时间:2016-08-15 17:16:19

标签: python sockets tcp client communication

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

1 个答案:

答案 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