我写了两个通过socket通信的应用程序。这是代码:
服务器
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()来停止程序并查看rosponses,但是这些应用程序在我在客户端终端写入第一条消息并按回车后终止。求你帮帮我。
我在Windows 32bit上工作。 Python 2.6
答案 0 :(得分:2)
你不发送任何东西。我假设行data = "Please vc or pc:
旨在从用户那里获得输入,但它只是将字符串分配给数据。然后,当您检查if data == 'pc' | data == 'vc'
时,检查失败,因此会打印“错误数据”。
也不要在布尔表达式中使用|
- 使用or
和and
。 |和&会做按位操纵 - 有时会做正确的事情,但有时它会咬你的屁股。