Веб-сокет Python отправляет только 1 сообщение - PullRequest
0 голосов
/ 03 марта 2019

Я работаю над личным проектом и отправляю данные от клиента на хост сокета.По какой-то причине сокет закрывается сразу после первого сообщения.Я пытался найти способ решить проблему, но ничего не смог найти.Кстати, я действительно новичок в сокетах и ​​все еще пытаюсь научиться их использовать.

Код хоста

import socket 
import sys 
from _thread import *

host = '' 
port = 5005 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

try:
    s.bind((host, port)) except socket.error as e:
    print(str(e))

s.listen(5) print('Waiting for a connection.')

def threaded_client(conn):
    reply = ''
    while True:
        data = conn.recv(2048)
        reply = reply + data.decode('utf-8')
        print(reply)
        if not data:
            print('someone left')
            break

    conn.close()

while True:

    conn, addr = s.accept()
    print('connected to: '+addr[0]+':'+str(addr[1]))

    start_new_thread(threaded_client,(conn,))

Код клиента

import socket

TCP_IP = '192.168.0.10'
TCP_PORT = 5005
BUFFER_SIZE = 1024

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((TCP_IP, TCP_PORT))


l="Connection is Up and Running"

client.send(l.encode())
data = client.recv(BUFFER_SIZE).decode()

client.send(l.encode())
# print(client.send(l.encode()))
data = client.recv(BUFFER_SIZE).decode()
# print("received data:", data)
client.send(l.encode())
# print(client.send(l.encode()))
data = client.recv(BUFFER_SIZE).decode()
client.close()

Вывод на хостсторона

Waiting for a connection.
connected to: 192.168.0.10:52228
Connection is Up and Running

1 Ответ

0 голосов
/ 04 марта 2019

После вызова client.send(l.encode()) в первый раз ваш код клиента вызывает data = client.recv(BUFFER_SIZE).decode(), что означает, что он пытается прочитать данные.Другой конец не отправляет никаких данных (в коде на стороне сервера), поэтому код клиента блокируется.- хачик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...