Клиент-серверное приложение Python socket

1

Я написал два приложения, которые связывают сокет. Это код:

Сервер:

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, но эти приложения завершаются после того, как я написал первое сообщение в клиентском терминале и нажмите enter. Пожалуйста, помогите мне.

Я работаю на Windows 32bit. Python 2.6

Теги:
sockets

1 ответ

2
Лучший ответ

Вы ничего не посылаете. Я предполагаю, что строка data = "Please vc or pc: предназначена для ввода данных от пользователя, но она просто назначает строку данным. Затем, когда вы проверяете if data == 'pc' | data == 'vc', проверка завершается с ошибкой, поэтому он печатает "плохие данные".

Также не используйте | в булевых выражениях - используйте or и and. | и будет делать побитовые манипуляции - иногда это будет делать правильно, но в других случаях это укусит вас в прикладе.

  • 0
    Я только что исправил свою проблему перед вашим ответом. Я буду редактировать основной пост;) Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню