ClientServer消息传递出错(Python套接字编程)

2024-04-20 00:15:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python(而不是python3)编写一个简单的客户机-服务器程序,每当我键入要发送的消息时,它会出现各种错误,例如:

文件“”,第1行 你好,我叫达普 ^ 语法错误:无效语法

或者

文件“”,第1行,输入 名称错误:名称“hello”未定义

或者

文件“”,第1行 你好,世界 ^ SyntaxError:解析时出现意外的EOF

以下是服务器代码:

import socket

def Main():
    host = socket.gethostname()
    port = 5000

    s = socket.socket()
    s.bind((host, port))

    s.listen(1)
    c, addr = s.accept()
    print("Connection from: "+str(addr))
    while True:
        data = c.recv(1024).decode('utf-8')
        if not data:
            break
        print("From connected user: "+data)
        data = data.upper()
        print("Sending: "+data)
        c.send(data.encode('utf-8'))
    c.close()

if __name__ == '__main__':
    Main()

这是客户代码

^{pr2}$

即使我可以创建此连接,但在我键入消息后,问题仍会发生。任何帮助都将不胜感激,谢谢!在


Tags: 文件代码名称host消息data键入if
3条回答

就代码而言,您只需要在服务器代码中进行更改。将c.close()替换为s.close(),因为根据您的代码,c是一个连接变量,而s是服务器的套接字。在

我已经让你的代码运行了,在进行了预期的更改之后,我在Python3中执行了它。在

服务器代码在这里:

import socket

def Main():
    host = "127.0.0.1"       # supply different hostname instead of socket.gethostname()
    port = 5000

    s = socket.socket()
    s.bind((host, port))

    s.listen(1)
    c, addr = s.accept()
    print("Connection from: "+str(addr))
    while True:
        data = c.recv(1024).decode('utf-8')
        if not data:
            break
        print("From connected user: "+data)
        data = data.upper()
        print("Sending: "+data)
        c.send(data.encode('utf-8'))
    s.close()           # it is s which indicates socket

if __name__ == '__main__':
    Main()

客户代码如下:

^{pr2}$

在Python2中,使用raw_input,而不是input。在

您应该使用raw_input而不是input,因为raw_input将捕获您的输入并将其转换为正确的类型。当使用input时,应该在输入周围加上引号。在

您可以在python文档中查看:https://docs.python.org/2/library/functions.html#raw_input

相关问题 更多 >