2010-08-18 82 views
1

我写了两个与套接字通信的应用程序。这是代码: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()来停止程序并查看响应,但这些应用程序在我在客户端终端中写入第一条消息并按Enter后终止。请帮帮我。

我在Windows 32bit上工作。 Python 2.6

回答

2

你不发送任何东西。我认为行data = "Please vc or pc:是为了从用户获得输入,但它只是将字符串分配给数据。然后,当您检查if data == 'pc' | data == 'vc'时,检查失败,因此它会打印“不良数据”。

也不要在布尔表达式中使用| - 使用orand。 |和&会做按位操作 - 有时候会做正确的事情,但有时它会咬你。

+0

我刚刚解决了我的问题,然后再回答。我将编辑主要帖子;)Thanx – CarolusPl 2010-08-18 07:06:44

相关问题