Python套接字客户端-服务器应用程序
我写了两个应用程序,它们通过套接字进行通信。以下是代码:
服务器:
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("",9999))
server_socket.listen(5)
video = True
power = True
print "TCPServer Waiting for client on port 9999"
while 1:
client_socket,address = server_socket.accept()
print "I got a connection from ", address
while 1:
data = client_socket.recv(512)
if data == 'vc' & video == True:
data = 'You can connect to Video'
video = False
client_socket.send(data)
elif data == 'pc' & power == True:
data = 'You can connect to Power Switch'
power = False
client_socket.send(data)
else :
data = 'Device is in use - wait a few secconds'
client_socket.send(data)
客户端:
import socket
import time
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 9999))
while 1:
data = ( 'Please vc or pc: ' )
time.sleep(5)
if data=='pc' | data=='vc':
print 'send to server: ' + data
time.sleep(5)
client_socket.send(data)
data = client_socket.recv(512)
print data
else:
print 'bad data - please try again'
print data
time.sleep(5)
我刚开始接触套接字编程,但遇到了一个问题。为什么我看不到服务器的响应?我在代码中加了time.sleep()来暂停程序,以便查看响应,但这些应用程序在我客户端输入第一条消息并按下回车后就结束了。请帮帮我。
我在32位的Windows上工作,使用的是Python 2.6。
1 个回答
2
你并没有发送任何东西。我猜这行代码 data = "Please vc or pc:
是想让用户输入内容,但它只是把这个字符串赋值给了data。然后当你检查 if data == 'pc' | data == 'vc'
时,这个检查失败了,所以就打印出“坏数据”。
另外,在布尔表达式中不要使用 |
,应该用 or
和 and
。因为 |
和 &
是用来做位运算的,有时候这样做可能会得到正确的结果,但其他时候可能会让你陷入麻烦。