TcpClient — это класс в .NET Framework, который «предоставляет простые методы для подключения, отправки и получения потоковых данных по сети». TcpClient скрывает детали работы с сокетами, и это простой способ открывать соединения и работать с TCP. К сожалению, TcpClient недоступен в Windows Phone версии .NET Framework.
SocketEx.TcpClient — неофициальный, мало протестированный TcpClient для Windows Phone
SocketEx.TcpClient является лицензированным MIT TcpClient для Windows Phone, целью которого является упрощение работы с сокетами Windows Phone. По сравнению с TcpClient в полной версии .NET Framework, SocketEx.TcpClient не на 100% совместим, а некоторые функции вообще не реализованы.
Обратите внимание, что библиотека работает в режиме синхронной блокировки. Это означает, что если вы используете TcpClient непосредственно из потока пользовательского интерфейса, вы заблокируете обновление пользовательского интерфейса .
Библиотека не прошла полное тестирование, поэтому могут возникнуть проблемы. Код основан на проекте Crystalbyte Networking for Silverlight , доступном в CodePlex. Почти весь код взят из этой аккуратной библиотеки, но я немного подкорректировал ее, чтобы она работала с Windows Phone, и устранил некоторые проблемы с многопоточностью.
Использование
С SocketEx.TcpClient вы не работаете с низкоуровневыми классами Socket и SocketAsyncEventArgs . Вместо этого вы создаете новый TcpClient, а затем управляете его потоком, используя StreamReader или StreamWriter. Это проще, чем кажется.
Ранее я писал о том, как работать со встроенными классами Socket и SocketAsyncEventArgs.
- Windows Phone Sockets: Как открыть соединение
- Windows Phone Sockets: как получить сообщение
- Windows Phone Sockets: как отправить сообщение
Теперь давайте сделаем те же самые примеры с SocketEx.TcpClient.
SocketEx.TcpClient — Как открыть соединение
Мы можем открыть соединение, передав адрес сервера и порт сервера в качестве параметров TcpClient.
var serverAddress = "www.google.fi";
var serverPort = 80;
var connection = new TcpClient(serverAddress, serverPort);
SocketEx.TcpClient — как получить сообщение
Чтобы прочитать сообщение, нам нужен StreamReader.
var connection = CreateConnection();
var stream = connection.GetStream();
var reader = new StreamReader(stream);
string message;
while ((message = reader.ReadLine()) != null)
{
Debug.WriteLine(message);
}
SocketEx.TcpClient — как отправить сообщение
Чтобы написать сообщение, нам нужен StreamWriter.
var connection = CreateConnection();
var stream = connection.GetStream();
using (var writer = new StreamWriter(stream))
{
var request = "GET / HTTP/1.1\r\nHost: " + serverAddress + "\r\nConnection: Close\r\n\r\n";
writer.WriteLine(request);
}
Проект дома и пример приложения
SocketEx.TcpClient живет в GitHub. Репозиторий содержит TcpClient и пример приложения, которое его использует.
NuGet
Самый простой способ начать работу с SocketEx — это использовать NuGet. Название пакета — SocketEx .
двоичный
Двоичная версия SocketEx доступна для скачивания с GitHub.