2015-08-19 3 views
1

Мне нужно несколько раз вызвать сервер сокера и распечатать его вывод.Несколько вызовов сокета Python с использованием Eventlet

Вот мой код ниже: -

server.py

import socket 

s = socket.socket() 

host = socket.gethostname() 

port = 1234 

s.bind((host, port)) 

s.listen(5) 

print "Server started" 
while True: 
    c, addr = s.accept() 
    print('Got connection from', addr) 
    #sprint('Received message == ',c.recv(50)) 
    s = c.recv(50)[::-1] 
    c.send(s) 
    c.close() 

client.py

import socket 
from time import sleep 
import eventlet 

def socket_client(): 
    s = socket.socket() 

    host = socket.gethostname() 

    port = 1234 

    s.connect((host, port)) 

    print "Sending data" 
    s.sendall("Hello!! How are you") 
    print(s.recv(1024)) 

#socket_client() 
pile = eventlet.GreenPile() 

for x in range(10): 
     print 'new process started' 
     pile.spawn(socket_client()) 
     print 'new process started over' 

print 'over' 

Я использую питона eventlet назвать socket_client() 10 раз, но его не возвращать правильный результат.

ответ

1

Вы переопределяете переменную с помощью сокета с помощью строки receive d из гнезда:

s = socket.socket() 
... 
s = c.recv(50)[::-1] 

Выберите другое имя переменной для второго случая.

+0

Спасибо .. это сработало, но все же я не получаю ожидаемого результата. После первого звонка он застревает .. нет ответа – user1050619

+0

Не знаю, после изменения 's = c.recv (50) [ :: - 1] c.send (s) 'to' msg = c.recv (50) [:: - 1] c.send (msg) 'он отлично работает для меня. Prints "начался новый процесс Отправка данных uoy era woH !! olleH новый процесс начался« несколько раз ». –

Смежные вопросы