服务器/客户端通信问题

wokaoyan1981 2021-01-01 10:39:06
这是《python核心编程(第3版)》第二章的示例。任务是:服务器接受客户端发送的数据字符串,并将其打上时间戳并返回给客户端。
遗憾的是,先运行服务器端代码,再运行客户端代码,并没有得到任何结果!请问如何解决?
服务器端代码tsTserv3.py:
#!/usr/bin/env python

from socket import *
from time import ctime
HOST = ''
PORT = 21565
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
print('waiting for connection...')
tcpCliSock, addr = tcpSerSock.accept()
print('...connected from:', addr)

while True:
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
tcpCliSock.send('[%s] %s' % (
bytes(ctime(), 'utf-8'), data))
tcpCliSock.close()
tcpSerSock.close()


客户端代码tsTcint3.py:
#!/usr/bin/env python

from socket import *

HOST = '127.0.0.1'
PORT = 21565
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)

while True:
data = input('> ').encode()
if not data:
break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
print(data.decode('utf-8'))

tcpCliSock.close()

...全文
168 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wokaoyan1981 2021-01-06
  • 打赏
  • 举报
回复
引用 1 楼 冰风漫天 的回复:
你把服务端回消息改成下面这样,客户端输入后可以得到回复的

#!/usr/bin/env python

from socket import *
from time import ctime
HOST = ''
PORT = 21565
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
    print('waiting for connection...')
    tcpCliSock, addr = tcpSerSock.accept()
    print('...connected from:', addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        tcpCliSock.send(bytes('[%s] %s' % (ctime(), data), 'utf-8'))
    tcpSerSock.close()
谢谢,还有一种方式.encode()
冰风漫天 2021-01-06
  • 打赏
  • 举报
回复
你把服务端回消息改成下面这样,客户端输入后可以得到回复的

#!/usr/bin/env python

from socket import *
from time import ctime
HOST = ''
PORT = 21565
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
    print('waiting for connection...')
    tcpCliSock, addr = tcpSerSock.accept()
    print('...connected from:', addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        tcpCliSock.send(bytes('[%s] %s' % (ctime(), data), 'utf-8'))
    tcpSerSock.close()

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧