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

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

31.10.2017, 22:02. Показов 2763. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru