python echo服务器不起作用

时间:2014-12-17 00:00:35

标签: python echo-server

我正在尝试使用python实现简单的echo-server。以下是我从不同的互联网课程中获取的代码:

#!/usr/bin/python

import socket

host = "192.168.253.134"
port = 33333

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)
print "Server on {server}:{port} is running...".format(server=host, port=port)
sock, addr = s.accept()

while True:
    buffer = sock.recv(128)
    if buffer == 'exit':
        sock.send("bye")
        break
    elif buffer:
        sock.send(buffer)

sock.close()
print "Server is closed..." 

问题是,当我连接到服务器并输入退出时,服务器不会关闭连接,而是回复我自己的查询((我注意到缓冲区实际上"退出\ n"但像"退出\ n"这样的组合不起作用((我没有看到问题。看来这段代码有效但不在我的ubuntu上( ((

1 个答案:

答案 0 :(得分:2)

也会发送换行符(也称为newline),因此请使用strip修复换行符(\n):

while True:
    buffer = sock.recv(128)
    if buffer.strip() == 'exit':
        sock.send("bye")
        break
    elif buffer:
        sock.send(buffer)