【发布时间】:2014-11-26 08:22:43
【问题描述】:
我目前正在学习使用 Python 进行联网,并创建了一个简单的 TCP 服务器和客户端。客户端和服务器连接得很好,但是,当我运行客户端脚本并从提示输入一些内容时,我输入的输入出现 NameError 异常。这不应该是这种情况,因为输入应该由标识符 (data) 引用。
我浏览了代码,但似乎找不到问题所在。请参阅下面的客户端和服务器代码:
客户端脚本:
#!/usr/bin/env python
from socket import *
from time import ctime
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = input('> ')
if not data:break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZ)
if not data:break
print(data.decode('utf-8'))
tcpCliSock.close()
服务器脚本:
from socket import *
from time import ctime
HOST = ""
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print("waiting for a 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(), 'utf-8'), data))
tcpCliSock.close()
tcpSerSock.close()
非常感谢!
【问题讨论】:
-
在您的客户端脚本中尝试使用 data = raw_input('>') 而不是 input('>') ..
-
您的代码似乎是正确的,因此请显示整个错误消息,否则我们很难找出问题所在
标签: python tcp network-programming client-server