套接字服务器中的换行符?

时间:2012-08-25 01:52:01

标签: python sockets line-breaks

有谁能告诉我如何摆脱这方面的线路?每次回显一个字符串时,都会有一个换行符。基本上是一个空角色。我怎么能摆脱它?

from socket import *
import threading
import thread

def handler(clientsock,addr):
    while 1:
        data = clientsock.recv(BUFSIZ)
        if not data:
            break
        msg = data
        print msg
        clientsock.send(msg)
    clientsock.close()

if __name__=='__main__':
    host = 'localhost'
    port = 20000
    BUFSIZ = 1024
    ADDR = (host, port)
    serversock = socket(AF_INET, SOCK_STREAM)
    serversock.bind(ADDR)
    serversock.listen(2)

print 'Version 0.1','-',host,':',port

while 1:
    clientsock, addr = serversock.accept()
    print 'initiated',addr[0],'on',addr[1]
    thread.start_new_thread(handler, (clientsock, addr))

2 个答案:

答案 0 :(得分:3)

替换

print msg

sys.stdout.write(msg)

显然,import sys位于顶部。出现换行的原因是因为易于使用print会自动将其添加到每个打印件中。 sys.stdout.write不会这样做。

答案 1 :(得分:0)

@nightcracker已经回答了这个问题,我只想留下另一个可能的解决方案。可以在print语句后添加逗号以禁止在字符串后添加换行符。

print msg, # <- notice the comma

来自Language reference

  

除非'\n'语句以逗号结尾,否则最后会写入print个字符。如果语句仅包含关键字print

,则这是唯一的操作