Комментарии 28
Первая ссылка в гугле —
Там все рассказано.
Там все рассказано.
+8
Извините, ссылка потерялась — docs.python.org/library/socket
+8
Да, документация это хорошо, но это статья для новичков, которым важно просто понять суть.
0
Да и английский не все знают идеально, к сожалению.
0
Если нет знаний языка, хотя бы на минимальном уровне, будет очень тяжело что-то разрабатывать, можно сказать, что ничего и не получится.
+5
Документация всё же носит «академический», справочный характер и мало подходит для обучения или первого знакомства с темой. Грубо говоря, нужно знать что такое сокеты, прежде чем читать доки по ним в конкретном языке. А подобные статьи вводят и понятия сокетов, и практику их использования.
-2
Посмотрите, как автор назвал статью — «Сокеты в Python для начинающих», тем более, в документации по ссылке, которую я приводил, есть пару слов о сокетах, которые не относятся к языку конкретно. И в данном случае, документация не носит «академический» или справочный характер, так как там все четко написано и с примерами.
+3
пока английский знаю не очень, документацию читаю через силу, поверхностно… но это не мешает мне разрабатывать код и в эмбеде и под PC для нужд реалити квестов.
0
Для новичков статья очень полезна. Спасибо.
0
Статья короткая и простая, но аналогия с окошками — очень удачная.
+3
Хорошая статья, мне понравилось, но все как то в общем, хотелось по больше инфы, хотя гугл никто еще не закрывал. Автор, спасибо!
+1
Спасибо, автору ad3w , все просто и понятно.
-2
Было бы ещё неплохо прочитать про docs.python.org/library/struct.html (Interpret strings as packed binary data)
Строки посылать хорошо, но в реальности почти всегда нужно сформировать пакет из данных, например какой то optcode + длина сообщения + само сообщение.
Строки посылать хорошо, но в реальности почти всегда нужно сформировать пакет из данных, например какой то optcode + длина сообщения + само сообщение.
0
НЛО прилетело и опубликовало эту надпись здесь
а есть ли на хабре (или может ещё где) популярная статья о сокетах для новичков с комментариями пользователей?
С пояснением различных состояний вроде LISTEN, TIME_WAIT, FIN_WAIT1 и т.п.
С ответами на вопросы о «Если данных больше нет, то этот метод ничего не возвращает. Таким образом мы можем получать от клиента любое количество данных.» — почему сервер решает что данных нет (на основании чего), любое количество — это сколько и что делать, если надо больше?
С кодом для работы сервер — много клиентов, какие проблемы в таком коде и как их обойти.
С обработкой ситуаций, когда клиент «отвалился».
С пояснением различных состояний вроде LISTEN, TIME_WAIT, FIN_WAIT1 и т.п.
С ответами на вопросы о «Если данных больше нет, то этот метод ничего не возвращает. Таким образом мы можем получать от клиента любое количество данных.» — почему сервер решает что данных нет (на основании чего), любое количество — это сколько и что делать, если надо больше?
С кодом для работы сервер — много клиентов, какие проблемы в таком коде и как их обойти.
С обработкой ситуаций, когда клиент «отвалился».
+1
Давайте дальше.
-1
От блин, работает зараза. Сервер запустил на компе, клиента на телефоне в андроиде в sl4a. единственное что не удобно серверная часть не резидентная что ли, т.е. терминал должен быть открыт и ip приходиться вбивать явно, где то на хабре так же был вариант генерирования QR-code c IP. Спасибо.
0
А что делать если мне нужен демон, который будет слушать порт постоянно и отдавать данные? В данном варианте сервер завершается после первой отдачи
0
- Увеличить число одновременных коннекций, например, на 5 в server.listen(5);
- Перенести операции с полученный сокетом из цикла while в параллельный поток используя модули threading или multiprocessing.
Пример с threading:
while True: client,addr = server.accept() print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1]) # spin up our client thread to handle incoming data client_handler = threading.Thread(target=handle_client,args=(client,)) client_handler.start()
Предпоследняя строчка вызывает функцию handle_client, где происходят любые вам нужные манипуляции с сгенерированный клиентским сокетом client, в то время, когда цикл вернулся и уже готов принимать следующую коннекцию.
0
Почему везде пишут «while true» хотя правильнее было бы «while conn» — так даже в официальной документации, но почему то во всех туториалах «while true»… заговор какой-то…
0
Спасибо, для старта статья - самое то)
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Сокеты в Python для начинающих