Каковы преимущества использования TcpClient по сравнению с Socket напрямую? - PullRequest
20 голосов
/ 04 марта 2012

Я понимаю, что TcpClient - это оболочка для класса сокетов, и я могу получить доступ к нижележащему сокету при использовании TcpClient, но что именно делает оболочка?

При использовании TCPClient мне нужнопродолжайте вызывать метод Receive (), как я это делаю с сокетом, или оболочка обеспечивает отображение всех моих данных?

Наконец, можно ли использовать TcpClient на сервере и на клиенте для упаковки сокета (после использования TcpListener дляпринять оригинальное соединение на сервере)

1 Ответ

20 голосов
/ 04 марта 2012

что делает обертка?

Позвольте мне объяснить это на примере. У вас есть метод в C # File.ReadAllLines. Он читает все строки в файле для вас. Теперь вы также можете достичь тех же результатов с помощью класса FileStream или любого другого класса, который читает файл .. НО .. обертка, т.е. File.ReadAllLines, позволяет добиться того же с меньшим количеством строк кода. Упаковщики всегда увеличивают производительность, абстрагируя детали низкого уровня

При использовании TCPClient мне нужно продолжать вызывать Receive (), как я делаю с сокетом или оболочка обеспечивает отображение всех моих данных?

TCPClient не имеет Receive метода, подобного Socket, но идея та же. Вам нужно будет использовать такие методы, как GetStream, чтобы прочитать данные, которые для вас автоматически не появятся

Можно ли использовать TcpClient как на сервере, так и на клиенте, чтобы обернуть Гнездо * * 1 021

Да, вы можете безопасно использовать его как на стороне клиента, так и на сервере.

...