пример на сокетах беркли без всяких обвязок
                  
                  
                  https://pastebin.com/sBGuzNcu
                  
                  
                  
                  
                  
                  Я создаю серверный сокет, принимаю новое соединение, и читаю с него тсп-поток в буффер. С клиента отсылаю "hello"  не закрываю соединение.
                  
                  
                   
                  
                  
                      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                  
                  
                      s.connect((TCP_IP, TCP_PORT))
                  
                  
                      s.send("hello")
                  
                  
                      print 'Sent hello'
                  
                  
                      time.sleep(1000000) # соединение не закрывается
                  
                  
                  
                  
                  
                  Операция чтения на сервере  завершается ровно в тот момент, когда все эти 6 байт прочитаны. 
                  
                  
                  Вопрос - как? Если в тсп это "поток", у которого нет конца. Ты вроде говорил что чтение будет либо пока буффер не заполнится, либо пока соединение не прервертся. У меня ни одно из этих условий не наступило - размер буфера 1024, прочитано 5 байт,  соединение не разорвано
                  
                  
                  
                  
                  
                  Received 5 bytes : hello
                  
                  
                
Вопрос ко всем желающим ответить, если что
Ну... Я не знаю, что там не так. Или наоборот, какая магия читает 5 байт. Во-первых, для этого надо И КЛИЕНТА тоже смотреть. ВО-вторых, я должен сам прогнать код и увидеть, что оно принимает 5 байт, а клиент при этом посылает именно 5 и не дисконнектится.
Обсуждают сегодня