Найти - Пользователи
Полная версия: Как передать переменную по сокету?
Начало » Network » Как передать переменную по сокету?
1
ViRuss08
Я делаю мессенджер на питоне вот столкнулся с проблеммой:

 client.send(("              ").encode("utf-8"))
client.send(input(f"{id(name)}> ").encode("utf-8"))
client.send(("              ").encode("utf-8"))

Я собирался отправить инпутом указав в начале имя:name, которое мы указали в начале программы. Должно выглядеть так:

Джони228>Привет, как дела?
Привет, как дела?

АлахАкбр>Та ниче так..
Та ниче так..

АлахАкбр>слш, принеси пж кружку кота)
слш, принеси пж кружку кота)

НО! Переменная name не считывается и все! Получается как-то так:

>Как дела?
Как дела?

Нормально

Вообщем, как переменную name отправить другому человеку, только уже не в виде name(иначе переменная отправителя и читателя смешаются) а в виде name1 например.

 def listen_server():
    while True:
        data = client.recv(2048)
        a = print(data.decode("utf-8"))
def send_server():
    listen_thread = Thread(target=listen_server)
    listen_thread.start()
    while True:
        client.send(("              ").encode("utf-8"))
        client.send(input(f"{id(name)}> ").encode("utf-8"))
        client.send(("              ").encode("utf-8"))
import socket
from threading import Thread
print("Твой код может состоять максимум из 8 символов, ид цифр и букв.")
name = input("Введите код: ")
n1 = len(name)
if n1 > 8:
    name[0:8]
client = socket.socket(
    socket.AF_INET,
    socket.SOCK_STREAM,
)
client.connect(
    ("localhost", 25565)
)
if __name__ == '__main__':
    send_server()
PEHDOM
ViRuss08очевидно вам нужно “придумать” свой протокол передачи
или посмотреть как это сделано у других: https://github.com/dmitry-vs/python-messenger
Или для начала вставлять имя отправителя прямо во сообщени, тоесть передавать не “Привет, как дела?” а “Джони228>Привет, как дела?” Это конечно неправильно, но для начала и так сойдет, а потом как поймете как на самом деле должен работать месенджер исправите.
ViRuss08
Что значит “нужно придумать свой протокол передачи”, И как это работает? Не я посмотрел что на гит хабе вы мне кинули. Но там много-много непонятных батников, .py и тд., и там все это смотреть и понимать трудно будет. Ну не оч я понимаю
xam1816
ViRuss08
Что значит “нужно придумать свой протокол передачи”
Раньше письма писали, и на конвертах договорились писать кому,от кого,индекс, вне зависимости от того что внутри.Вот и здесь отправляйте кортеж или словарь или json где будут к примеру
 {"name":"xxx","message":"bla-bla"}
а в приемник будет доставать
  data['name'], data['message']
ViRuss08
Можешь подсказать как это делается пж
ViRuss08

Я нашел проблемму!
 client.send(("              ").encode("utf-8"))
client.send(input(f"{id(name)}> ").encode("utf-8"))
client.send(("              ").encode("utf-8"))
То что передается в инпуте, в самом сообщении не передается!)))
Я ржу просто!)
Тут сидел пол часа писал, следил за коментами. И тут такая тупая ошибка)
ViRuss08
Вообщем надо так:
 def listen_server():
    while True:
        time1 = time.strftime("%Y-%m-%d(%H.%M.%S)", time.localtime())
        data = client.recv(2048)
        print("["+time1+"] "+data.decode("utf-8"))
def send_server():
    listen_thread = Thread(target=listen_server)
    listen_thread.start()
    while True:
        client.send(("              ").encode("utf-8"))
        client.send((name + "> " + input(":::")).encode("utf-8"))
        client.send(("              ").encode("utf-8"))
import socket, time
from threading import Thread
print("Твой код может состоять максимум из 8 символов, ид цифр и букв.")
name = input("Введите код: ")
n1 = len(name)
if n1 > 8:
    name[0:8]
if name == "123098":
    name = "Юра"
if name == "112233":
    name = "Федя"
run = True
client = socket.socket(
    socket.AF_INET,
    socket.SOCK_STREAM,
)
if run == True:
    client.connect(
        ("localhost", 25565)
    )
    client.send((f"К нам присоединился {name}").encode("utf-8"))
    run = False
if __name__ == '__main__':
    send_server()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB