2015-06-21 1 views
0

У меня возникли проблемы с получением команд сервера сокетов Python с помощью клиента сокета Python. Сервер и клиент могут отправлять текст друг другу, но я не могу сделать текст от клиента, инициирующего событие на сервере. Может ли кто-нибудь мне помочь? Я использую Python 3.4.У меня возникли проблемы с получением команд сервера сокетов Python с помощью команды сокета Python

server.py

import socket 

host = '' 
port = 1010 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host, port)) 
s.listen(1) 
conn, addr = s.accept() 
print ("Connection from", addr) 
while True: 
    databytes = conn.recv(1024) 
    if not databytes: break 
    data = databytes.decode('utf-8') 
    print("Recieved: "+(data)) 
    response = input("Reply: ") 
    if data == "dodo": 
     print("hejhej") 
    if response == "exit": 
     break 
    conn.sendall(response.encode('utf-8')) 
conn.close() 

В server.py я попытался сделать слово "Додо" триггер print("hejhej").

client.py

import socket 

host = '127.0.0.1' 
port = 1010 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((host, port)) 
print("Connected to "+(host)+" on port "+str(port)) 
initialMessage = input("Send: ") 
s.sendall(initialMessage.encode('utf-8')) 

while True: 
data = s.recv(1024) 
print("Recieved: "+(data.decode('utf-8'))) 
response = input("Reply: ") 
if response == "exit": 
    break 
s.sendall(response.encode('utf-8')) 
s.close() 

ответ

1

Все здесь работает нормально, но, возможно, не так, как вы хотите. Если вы переключите заказ на пару строк, он отобразит вашу строку событий, прежде чем вы введете ответ своего сервера.

import socket 

host = '' 
port = 1010 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host, port)) 
s.listen(1) 
conn, addr = s.accept() 
print ("Connection from", addr) 
while True: 
    databytes = conn.recv(1024) 
    if not databytes: break 
    data = databytes.decode('utf-8') 
    print("Recieved: "+(data)) 
    if data == "dodo": # moved to before the `input` call 
     print("hejhej") 
    response = input("Reply: ") 
    if response == "exit": 
     break 
    conn.sendall(response.encode('utf-8')) 
conn.close() 
+0

tnx отлично работает сейчас. –