3 / 3 / 1
Регистрация: 26.10.2010
Сообщений: 42

Python socket telnet, потоки и ответ сервера

08.12.2014, 21:24. Показов 6606. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день всем. Возник вопрос, рассматриваю как общаться с python через telnet, имею код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python
# -*- coding: utf-8 -*- 
 
import socket
import sys
import thread
 
host = 'localhost'
port = 8081
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.bind((host, port))
except socket.error as e:
    print(str(e))
 
s.listen(5)
print("Wait connection")
def threaded_client(conn, addr):
    conn.send(str.encode("Welcome, type your info\n"))
 
    while True:
        data = conn.recv(2048)
        reply = 'Server output: ' + data.decode("utf-8")
        if not data:
            break
        conn.sendall(reply)
 
while True:
    conn, addr = s.accept()
    print("Connected to: " + addr[0] + ":" + str(addr[1]))
    thread.start_new_thread(threaded_client, (conn, addr))
 
sock.close()
Работает, кушать не просит, делает что ему говорят.
Соединяюсь с сервером по telnet, ввожу символы, он отвечает много раз, запрос - ответ без проблем, но вот код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python
# -*- coding: utf-8 -*- 
 
import socket
import sys
import thread
host = 'localhost'
port = 8082
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.bind((host, port))
except socket.error as e:
    print(str(e))
 
s.listen(5)
print("Wait connection")
 
while True:
    conn, addr = s.accept()
    conn.send(str.encode("Welcome, type your info\n"))
    data = conn.recv(2048)
    reply = 'Server output: ' + data.decode("utf-8")
    if not data:
        break
    conn.sendall(reply)
sock.close()
Позволяет всего раз передать серверу какуе-то информацию, он даст ответ и все, дальнейшие попытки ввода ему данных, возврата назад не дают.


Может кто-то объяснить почему так происходит?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2014, 21:24
Ответы с готовыми решениями:

C++ Socket FTP client не принимает от сервера ответ
VISUAL STUDIO 2010 C++ Проблема в том что при запросе CString m_strMessage = L"USER admin...

Python socket Взаимодействие клиента и сервера в разных сетях wifi
Есть сервер и клиент. При подключении клиента к серверу на разных устройствах которые находятся в одной сети обмен данными происходит...

Не получается отправить картинку на socket клиент java android с сервера python
Делаю программу, которая передает png изображение с python на java android и сохранение ее там. Сервер #-- создание сервера f =...

2
8 / 8 / 3
Регистрация: 26.06.2014
Сообщений: 47
11.04.2016, 21:03
он же у тебя в цикле ждёт коннекта очередного ( s.accept() )
получил входящее соединение, отправил "велком", получил обратку и возвращается ждать очередного входящего соединения.
Выведи общение клиент-сервер в отдельный поток и всё будет как надо по-идее
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.04.2016, 21:20
Кстати вроде для телнета есть спец. библиотека.

Добавлено через 3 минуты
https://docs.python.org/2/library/telnetlib.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2016, 21:20
Помогаю со студенческими работами здесь

Не получается нормально отправить сообщение с socket сервера Python на клиент C++ Winsock
Здравствуйте, вот клиент #include <iostream> #pragma comment(lib, "ws2_32.lib") #include <winsock2.h> #include <Windows.h>...

Telnet (socket)
Здравствуйте, пытаюсь сделать сделать мини-клиент для Telnet, параллельно изучая сокеты. Вот код (часть кода считывания данных взял из...

Socket и понимание команд от telnet
Доброго всем, есть пример TCP сервера: #include <stdio.h> #include <string.h> //strlen #include <stdlib.h> //strlen ...

Windows socket server python + socket client js
Здравствуйте пытаюсь решить такую задачу, на веб странице реализовал soket клиент на js, и socket server, сокет сервер получает данные от...

Как ввести логин и пароль в Telnet и получить ответ в файл?
Как ввести логин и пароль с bat файла в telnet и получить ответ в файл


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
Сериализация и десериализация данных на Python
py-thonny 15.05.2025
Сериализация — это своего рода "замораживание" объектов. Вы берёте живой, динамический объект из памяти и превращаете его в статичную строку или поток байтов. А десериализация выполняет обратный. . .
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru