Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 25

Приложение клиент-сервер, соединение со второго раза

31.10.2017, 22:02. Показов 2675. Ответов 5

Студворк — интернет-сервис помощи студентам
Добрый день.
Почему-то в следующей элементарной программе соединение клиента с сервером происходит только со второго раза. И так каждый раз после перезапуска сервера. Может кто объяснить причину такого поведения и как решить эту проблему? Может дело в том, что asyncore используется только на стороне сервера? (Windows 7, Python 3) Заранее спасибо!

Клиент:
Python
1
2
3
4
5
6
7
import socket
 
sock = socket.socket()#создаем сокет
host = 'localhost'
port = 8081
tempr = port
sock.connect((host,port))
Сервер:
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
import asyncore
import socket
import time
 
class EchoHandler(asyncore.dispatcher_with_send):
    
    def handle_read(self):
        data = self.recv(1024)
               
class EchoServer(asyncore.dispatcher):
    def __init__(self, host, port):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.set_reuse_addr()
        self.bind((host, port))
        self.listen(2)
 
    def handle_accept(self):
        pair = self.accept()
        if pair is not None:
            sock, addr = pair
            print ('Incoming connection from %s' % repr(addr))
            handler = EchoHandler(sock)
 
def main():
    host = 'localhost'
    port = 8081
    server = EchoServer(host, port)
    server.handle_accept()
    print ('Сервер %s запущен'% port)
    asyncore.loop()
 
if __name__ == '__main__': 
    main()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2017, 22:02
Ответы с готовыми решениями:

Соединение клиент-сервер-клиент для чайников, объясните на пальцах как это работает
Не могу найти нигде что-то чтобы было доходчиво и с примером написано как работает соединение, при котором нужно соединить друг с другом...

TLSv1.2 соединение - Клиент приложение - подделываем соединение
Здравствуйте уважаемые эксперты. У меня к вам вопрос. Есть приложение (на моем ПК), это приложение связывается с сервером (сервер -...

Клиент-Серверное приложение. Как сделать, чтобы сервер сам отправлял сообщения на клиент
Добрый день всем. Проблема заключается в следующем: Есть клиент-серверное приложение, хочу реализовать своего рода защиту, чтобы при...

5
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 25
06.11.2017, 21:51  [ТС]
29 строчки конечно же быть не должно - это были мои попытки исправить положение. Все-равно сервер к клиенту и так подключается не с первого раза.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.11.2017, 23:32
Цитата Сообщение от VISTa Посмотреть сообщение
Все-равно сервер к клиенту и так подключается не с первого раз
Вообще-то все должно быть наоборот: запускаем сервер и затем подключаемся.
У меня ваш код работает. Так как он ничего полезного не делает - трудно судить, чего вы от него хотите.
Вложение 879322
В качестве клиента у меня выступает браузер.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.11.2017, 23:39
P.S. asyncore считается уже устаревшем API. Актуальное это asyncio.
This module exists for backwards compatibility only. For new code we recommend using asyncio.
0
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 25
07.11.2017, 00:48  [ТС]
Это само собой разумеется.
Я хочу, чтобы надпись Incomming connection from... выскакивала с первой попытки подключения клиента к серверу, тогда как у меня после первого запуска сервера это происходит только после второго перезапуска клиента.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.11.2017, 01:53
У меня с первого раза и появляется строка подключения.
P.S. У asyncore очень непонятный интерфейс с очень примитивными и никуда не годными примерами. Вот вы перепечатали пример из документации - похвально - но что вы дальше будете делать? Как отправить данные клиенту (браузеру, например) я после часа ковыряния так и не понял. С tornado и то куда проще было разобраться.
0
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru