2010-08-18 12 views
1

j'ai écrit deux applictions qui Comunícate par socket. Voici le code:socket Python application client-serveur

Serveur:

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) 

Client:

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) 

Je viens de commencer mon aventure avec prises et j'ai un problème. Pourquoi je ne vois pas la réponse du serveur? Je colle dans le code time.sleep() pour arrêter le programme et voir les réponses, mais ces applications se terminent après avoir écrit le premier message dans le terminal client et appuyez sur Entrée. Aidez-moi, s'il vous plaît.

Je travaille sur Windows 32 bits. Python 2.6

Répondre

2

Vous n'envoyez rien. Je suppose que la ligne data = "Please vc or pc: est destinée à recevoir des entrées de l'utilisateur, mais elle affecte simplement la chaîne aux données. Ensuite, lorsque vous cochez if data == 'pc' | data == 'vc', la vérification échoue, de sorte qu'il imprime des "données incorrectes".

N'utilisez pas non plus | dans les expressions booléennes - utilisez or et and. | et & fera manipulation bitwise - parfois que fera la bonne chose, mais d'autres fois, il va vous mordre dans le cul.

+0

Je viens de régler mon problème avant votre réponse. Je vais modifier le post principal;) Thanx – CarolusPl

Questions connexes