![]() |
|
Модераторы: gambit |
![]()
|
|
| retto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 30.10.2007 Где: Кривой Рог, Украи на Репутация: нет Всего: нет |
хочу разобраться с сокетами. Перечитал столько литературы что в голове полный бардак.
Хочу создать примитивное приложение для общение в локальной сети. Создал (по примеру) серверный сокет. Создаю клиентский сокет:
но он ругается на строчку _serverSocket.Connect(myEndpoint);, пишет что удаленый компьютер отверг запрос на подключение.... не подскажете в чем тут загвоздка? |
|||
|
||||
| retto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 30.10.2007 Где: Кривой Рог, Украи на Репутация: нет Всего: нет |
разобрался в чем дело - "стучался" не в тот порт))
Но всеравно не могу принимать сообщения, сообщения принимаются после того, как в командой строке вызываю telnet и подключаюсь к требуемому порту.. тогда все работает. Как сделать чтобы сообщения нормально принимались? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
Чтобы принимать сообщения, нужно создать клиентский сокет, ИМХО.
-------------------- ![]() |
|||
|
||||
| retto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 30.10.2007 Где: Кривой Рог, Украи на Репутация: нет Всего: нет |
mr.DUDA, может ты имел ввиду серверный сокет?
Сообщение передаются и принимаются, всё нормально. Надо узнать у кого еще в сети запущена эта программа, как это сделать? сканировать айпишники по нужному порту, или можно както по-другому (тобишь нормальному)? Это сообщение отредактировал(а) retto - 20.12.2007, 21:50 |
|||
|
||||
| retto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 30.10.2007 Где: Кривой Рог, Украи на Репутация: нет Всего: нет |
нужно передавать файлы по сети. Как узнать что "пришел" именно файл а не сообщение? как их распознать?
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
А чем отличается файл от сообщения ?
Посылаем через сокет имя файла, потом сразу его содержимое. Клиент принимает имя файла и содержимое, сохраняет у себя. Ногами не бить, в сетях я не спец. -------------------- ![]() |
|||
|
||||
| retto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 30.10.2007 Где: Кривой Рог, Украи на Репутация: нет Всего: нет |
ну а если это простое сообщение типа "хай, как дела?"... как определить что это сообщение а не имя файла?
|
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: нет Всего: 40 |
сначала пишем заголовок, фиксированного размера, в котором определяется что передаем. При приеме сначала читаем этот заголовок и дальше в зависимости от типа контента делаем что надо с телом сообщения.
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| retto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 30.10.2007 Где: Кривой Рог, Украи на Репутация: нет Всего: нет |
то есть надо создать типа идентификатора для сообщения и для файла?
понял, спс, буду пробовать Это сообщение отредактировал(а) retto - 27.12.2007, 17:48 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
Простейший вариант - читать байты пока не встретится 0, в кодировке ASCII это признак конца строки.
-------------------- ![]() |
|||
|
||||
| retto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 30.10.2007 Где: Кривой Рог, Украи на Репутация: нет Всего: нет |
а если юникод?
можно просто файлы отсылать по одному порту, а сообщения по - другому. На сколько я знаю так устароенна знаменитая аська таким способом ненадо будет делать лишних операций с определением сообщения и файла. но зато надо будет прослушивать сразу два порта |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
Если юникод - конвертировать строку в байты Encoding.UTF8.GetBytes(str), и перед строкой передавать длину строки в байтах (int). На клиенте читать int, потом массив со строкой, конвертировать обратно в string. Кодировку можно выбрать любую, хоть UTF8, хоть длинный Unicode, главное чтобы на клиенте и сервере совпадало.
-------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |