LINUX.ORG.RU

не могу разобраться с сокетами python

 , ,


0

1

Контейнер на goormide, проброшен порт 7000 https://pastenow.ru/be3bf70ee55eced05bc9f41e0fe6738c Какой порт и где указывать не понимаю. На машине указываю ip 0.0.0.0 , пытался указывать внешний ip выдаёт ошибку. Разъясните мне, как это нужно правильно делать. https://pastenow.ru/2cbc12294b08e20f5e1309e9f1f22be7


выдаёт ошибку

Ты что-то сделал не так.

server.bind('0.0.0.0', 52814)

Тут явно дело в том,..

Какую ошибку? Что выдаёт? При попытке чего? Где остальной код? Можешь ли подключиться изнутри?

  1. Соберись
  2. Сформулируй, что ты хочешь добиться
  3. Добейся
t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

Сейчас попробовал оставить host = '' пустым, сервер стал заводиться на порте 52814. На клиенте в это время подключаюсь к внешнему ip машины, с портом 52814. При этом возникает ошибка на клиенте [WinError 10061] Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение

Pe4kin
() автор топика

поищи в Интернете, что это вообще такое - сокет, бинд, листен и тд и тп

пока не забыл, недавно LINUX-ORG-RU интересную ссыль проносил -> https://en.wikipedia.org/wiki/0.0.0.0

d00fy ★★★
()
Последнее исправление: d00fy (всего исправлений: 1)
Ответ на: комментарий от t184256

лан-лан-лан

Сервер:

import socket import threading

port = 52814 host = ""

server = socket.socket()

server.bind((host, port))

server.listen(4)

client = []

def start(): conn, addr = server.accept() client.append(conn) t = threading.Thread(target = send, args = (conn)) t.start()

def send(fromConnetction): try: while(True): data = fromConnetction.recv(4069) for cl in client: if cl != fromConnetction: cl.send(data) except: print(«Client Disconnected») start()

Клиент:

import socket import threading import pyaudio

client = socket.socket()

host = «18.195.214.131» port = 52814

client.connect((host, port))

p = pyaudio.PyAudio()

Format = pyaudio.paInt16 Chunks = 4096 Channels = 2 Rate = 44100

input_stream = p.open(format = Format, channels=Channels, rate=Rate, input=True, frames_per_buffer=Chunks )

output_stream = p.open(format = Format, channels=Channels, rate=Rate, output=True, frames_per_buffer=Chunks )

def send(): while(True): try: data = input_stream.read(Chunks) client.send(data) except: break

def recieve(): while(True): try: data = client.recv(Chunks) output_stream.write(data) except: break

t1 = threading.Thread(target=send) t2 = threading.Thread(target=recieve)

t1.start() t2.start()

t1.join() t2.join()

input_stream.stop() input_stream.close() output_stream.stop() output_stream.close()

Pe4kin
() автор топика
Ответ на: комментарий от t184256

Это голосовой чат, клиенты запускают скрипты у себя на пк и общаются связуясь с сервером.

Pe4kin
() автор топика

Ну если эта штука работает как докер, то после того как ты установил связку контейнер:7000 внешний:52814, то у тебя из консоли твой контейнер должен стать доступным по адресу localhost:52814 и это будет вести на порт 7000 в контейнере

Aswed ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.