Лучший отвечающий
Клиент своего чата на WinRT (вопрос реализации)

Вопрос
-
Делаю в учебных целях чат.
Сервер написал на .NET 4.0 (по некоторым причинам на 4.5 не могу)
ну это пока не сервер а так, набросок в виде получателя текстовых сообщений.
работает через System.Net.Sockets
для начала клиент написал тоже консольный и тоже на .NET 4.0 , с использованием тех же классов.
всё соединилось, работает.
но теперь решил написать клиент в Metro-стиле, т.е. на WinRT.
но System.Net.Sockets там нету, есть только Windows.Networking.Sockets
как можно совместить клиент и сервер работая с этими классами?
пока что не очень понял.
---
второй вопрос, относительно концепции.
насколько я понял, при сворачивании метро приложения связь будет теряться с сервером, что не очень хорошо для чата.
как это лучше обойти?созданием службы windows и с последующей работы с ней в метро-приложении?
25 марта 2012 г. 9:13
Ответы
-
Здравсвтуйте.
У вас для передачи данных между клиентом и сервером используется TCP протокол? Тогда вам нужно использовать класс StreamSocket, по его использованию есть пример на javascript+html5
Общая логика работы с данным классом такова:
1. Создаете объект данного класса
2. Через свойство Control получаете объект StreamSocketControl с помощью которого вы настраивате сокет нужным образом
3. Для соединения с сервером используете метод ConnectAsync
4. С помощью свойст OutputStream и InputStream получаете исходящий и входящий потоки данных, которые используете для отправки/получения данных от сервера.
5. После того как работа клиента завершена вызываете метод Close для того чтобы прервать все ожидающие операции и освободить неуправляемые ресурсы.
Для связи [mail]
- Помечено в качестве ответа Abolmasov Dmitry 30 марта 2012 г. 6:36
26 марта 2012 г. 6:51
Все ответы
-
Я еще не разбирался с Metro, но как я понимаю он использует .Net 4.5 который является расширением поверх 4.0 (а тот в свою очередь расширением по верх 3.5 и т.д.), а значит вам достаточно подключить к проекту нужное пространство имен (System.Net.Sockets) и код будет работать.
Это так с проектами WPF - никто же не мешает подключать System.Windows.Forms и пользоваться классами от туда... Я думаю именно поэтому программирование на .Net и имеет такой успех.
UPD: Насчет второго вопроса. Попробуйте поискать информацию тут и тут
Влюблен в WPF Не пишу на C#
- Изменено LXGDARKEditor 26 марта 2012 г. 5:55
26 марта 2012 г. 4:36Отвечающий -
Здравсвтуйте.
У вас для передачи данных между клиентом и сервером используется TCP протокол? Тогда вам нужно использовать класс StreamSocket, по его использованию есть пример на javascript+html5
Общая логика работы с данным классом такова:
1. Создаете объект данного класса
2. Через свойство Control получаете объект StreamSocketControl с помощью которого вы настраивате сокет нужным образом
3. Для соединения с сервером используете метод ConnectAsync
4. С помощью свойст OutputStream и InputStream получаете исходящий и входящий потоки данных, которые используете для отправки/получения данных от сервера.
5. После того как работа клиента завершена вызываете метод Close для того чтобы прервать все ожидающие операции и освободить неуправляемые ресурсы.
Для связи [mail]
- Помечено в качестве ответа Abolmasov Dmitry 30 марта 2012 г. 6:36
26 марта 2012 г. 6:51 -
Мне пишет что всё что можно уже подключено
26 марта 2012 г. 14:44 -
3. Для соединения с сервером используете метод ConnectAsync
Вот не понимаю как его использовать?
ему в качестве параметра надо передать некий Windows.Networking.EndpointPair.
ну допустим создаю новый объект Windows.Networking.EndpointPair, ему в конструктор надо передать localHostName, localServiceName, remoteHostName, remoteServiceName.
при чем 1 и 3 аргумент типа Windows.Networking.Hostname.
в System.Net.Sockets такого вообще не видел..
там просто пишу:
TcpClient client = new TcpClient(string hostname,int port)
byte[] bytes = Encoding.Unicode.GetBytes(string message);
client.GetStream().Write(byte[] buffer, int offset, int size);
и всё, отправляет всё нормально (ну я упрощённо написал без потоков и т.д.)
---
получилось соединиться!спасибо)
- Изменено SUDALV 26 марта 2012 г. 20:45
26 марта 2012 г. 14:59