Статьи

TcpClient — упрощение работы с Windows Phone

образ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.

Теперь давайте сделаем те же самые примеры с 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.