Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/33: Рейтинг темы: голосов - 33, средняя оценка - 4.58
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378

Приложение мгновенного обмена сообщениями, как получить список друзей

22.03.2012, 19:17. Показов 7313. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Я работаю на C# всего нечего, но он меня заинтересовал... и я решил на тему дипломной программы выбрать "Приложение мгновенного обмена сообщениями" на C# (хочу реализовать что похожие на qip, mail agent, в лучшем случае по функциональности похожим на skype), потихоньку освоил сокеты и использую примеры из книжки "NET. Сетевое программирование для профессионалов" Асинхронное приложение сервер (так сказать взял его за основу и разрабатываю дальше). Очень трудно освоить =(, сейчас мне интересно как реализовать разрыв клиента к серверу, то есть после закрытия клиентом приложение, чтобы на сервере закрывался поток(сокет), у меня происходит ошибка на данной строчке
C#
1
int bytesRead = handler.EndReceive(ar);
пишет "Удаленный хост принудительно разорвал существующее подключение", как этого избежать непойму.

Так как там застрял я начал писать клиентскую часть, а если точнее взялся за оформление и тут тоже не могу найти решение, как реализовать список друзей/user list (чтобы было фото, имя, статус, ну еще что то) и так же диалоговое окно/окно обмена сообщениями (пробовал сделать с MDI формой, но как то не удачно, мало возможностей изменений интерфейса). В интернете я нашел много примеров изменения компонентов и форм, но почти везде используется рисование, что у меня вовсе не удается =(.

Еще не могу не как придумать как лучше сделать, передачу данных о пользователе (фото, имя, ид, возраст, статус и тп), сохранение истории.

Вобщем итоге у меня есть сервер к которому можно подключиться и авторизоваться.

Все данные о пользователе я беру из БД MySql.

Добавлено через 21 час 8 минут
Оформление
Listbox
Вобщем решил сам нарисовать свой ListBox, нашел статью сделал все как там описано (в плане рисование компоненты), но вышло как то не удачно (исходник залил)
Не могу понять по какой причине увеличивается размер изображения, оно имеет размер 48х48, а при добавления записи ее размер увеличивается и выходит за рамки дозволенного.
Так же в том исходнике указан пример с тем что там всегда одно изображение, а мне нужно чтобы у каждого значение было свое изображение (будет загружаться с сервера).
+ ко всему при добавление записи в мою компоненту создается ошибка... как объяснить ее даже не знаю, посмотрите в исходнике.

Tabcontrol
Так как с MDI не получается сделать диалоговое окно решил использовать Tabcontrol, первым делом нашел такую чтобы была возможность закрыть вкладку. Тут. Возникло сразу 2 вопроса каким образом поменять цвет шапки и внутренностей.
Так же не могу реализовать чтобы при нажатии на элемент, из списка Listbox, открывалось окно где есть контрол и в ней одна вкладка с двумя Rich или Textbox'ами, button кнопкой отправки, menustrip, picturebox. И при последующем нажатии другого элемента, из списка Listbox, открывалось та же форма с тем же контролом, но просто добавил новая вкладка с тем же компонентами.

И еще на счет сервера не кто не знает? (описано в посте выше)
Вложения
Тип файла: rar LBP.rar (45.6 Кб, 51 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2012, 19:17
Ответы с готовыми решениями:

Программа для мгновенного обмена сообщениями
Скажи, пожалуйста, если писать программу для обмена через Интернет, а не по локальной сети. То что для этого надо? Я так понимаю нужен...

Приложение для обмена сообщениями
Здравствуйте. Необходимо написать приложение для обмена сообщениями. Я так понимаю, это должен быть чат. Но возникло несколько вопросов: ...

Как получить список друзей вк
Как получить список друзей вк Авторизуюсь так: <?php function wparse($s, $starts, $ends){ * *$result=substr($s, strpos($s,...

33
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
20.04.2012, 20:57  [ТС]
Студворк — интернет-сервис помощи студентам
я как бы не отлично знаю C#, но я знаю что Ip-адрес на клиенте тоже надо сменить с x.y.z.c на x.y.k.l -_-, если все крутить в локальной сети, то все работает, а через интернет не хочет
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
20.04.2012, 21:01
Ip должен быть выделеным и через NAT прогнать
возможно настройки Брендмауера надо поменять
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
20.04.2012, 21:04  [ТС]
Брандмауэр выключен, а как через NAT прогнать?
еще раньше стоял Nod32 3, а щас каспер 6, может что то там не так?
IP адрес сам по себе меняет очень редко, раз в 1-3 месяца, а не так что модем выкл/вкл и другой.
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
20.04.2012, 21:09
модем или маршрутизатор?
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
20.04.2012, 21:12  [ТС]
модем, все пока что делается дома, в ближайший год наверное -_-'''' пока программу до ума совсем не доведу....
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
20.04.2012, 21:14
Мне кажется что у вас не выделеный IP, напишите свой адресс сюда
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
20.04.2012, 21:18  [ТС]
62.84.57.111 использую порт 4505
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
20.04.2012, 21:30
а теперь тут посмотрите http://2ip.ru/
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
20.04.2012, 21:37  [ТС]
на эту страницу не заходит, зашел через http://speed-tester.info/check_ip.php тот же ip
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
20.04.2012, 21:52
Посморите или брендмауер не блочит порты

Добавлено через 19 секунд
на любом сайте проверте открыт ли порт
1
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
20.04.2012, 22:26  [ТС]
поковырялся (на том же сайте была проверка порта) и выяснил что все дело в касперском 6, когда он включен все порты закрыты, как его выключил так клиент сразу смог подключится к серверу и любой порт был открыт....
сейчас возник вопрос как правильно сделать разрыв клиента
C#
1
int recv = user[Clnm].Receive(data);
на этой строчке выходит ошибка и сервер закрывается...вобще сделал так что на сервер приходит сообщение о том что клиент отключается, сервер это принимает и чистит сокет, который работал с клиентом, но все ровно Receive продолжает слушать сообщения для этого сокета и там(строчка int recv...) выводит ошибку, о том что клиент разорвал соединение, не знаю как обойти...
и как можно реализовать передачу сообщений/дружбу/новость отключенному пользователю, если у меня все строится на том что клиент записывается в сокет и он может работать с другими сокетами, к примеру получили сообщение от сокета[x] для сокета[y] и обратно, так будет работать, но если сокет[y] отключился, сокет[x] не может передать сообщение сокету[y]... Может есть какая то виртуальная процедура, которая будет висеть до тех пор пока сокет[y] не зайдет?
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
24.04.2012, 12:30  [ТС]
Не могу решить проблему при отправке/получении что то не так, с латинскими символами проблем нет, а вместо русских - выдает знаки вопроса, при вводе и при выводе.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Получение, в классе MySend есть строка message
                    MemoryStream ms = new MemoryStream(data);
                    BinaryFormatter xs = new BinaryFormatter();
                    //десериализуем в память
                    MySend mes = (MySend)xs.Deserialize(ms);
                    ms.Close();
 
//отправка 
                                    MemoryStream mse = new MemoryStream();
                                    BinaryFormatter xse = new BinaryFormatter();
                                    xse.Serialize(mse, mes);
                                    string str = Encoding.Default.GetString(mse.ToArray());
                                    mse.Close();
                                    byte[] msg = Encoding.ASCII.GetBytes(str);
                                    user[r].BeginSend(msg, 0, msg.Length, 0,
                                        new AsyncCallback(SendCallback), user[r]);
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
24.04.2012, 13:06  [ТС]
Кто не совсем понял что я сказал скрин внизу
Миниатюры
Приложение мгновенного обмена сообщениями, как получить список друзей  
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
14.06.2012, 19:35  [ТС]
Доброго времени!
Спасибо всем, кто хоть чем то помог
Прежде чем добавлять графические и функциональные возможности, хотелось бы избавится от существующих ошибок, сейчас привлекло внимание использование памяти, сравнив мою программу с Skype и magent, в состояние авторизации, она потребляет примерно в 2,1-2,5 раза меньше, но с тем учетом, что моя программа умеет только авторизовываться, отправлять и получать сообщения, не имеет не какого улучшенного/необычного графического интерфейса, в ней даже не отображаются аватарки, не говоря уже о прочих функциональных возможностей Skype'а или maganet'а, значит ли это что код программы является слишком большим/неверным или же это такое потребление памяти для клиентской программы нормально?
ЗЫ: ChatClientSpeakPort - клиент, ChatServer SP - сервер :O
Миниатюры
Приложение мгновенного обмена сообщениями, как получить список друзей  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.06.2012, 19:35

Как получить список друзей Вконтакте
<?php //Функция парсинга function wparse($s, $starts, $ends){ * *$result=substr($s, strpos($s, $starts)+strlen($starts),...

Vk API, как получить список друзей?
Всем привет, подскажите как получить список друзей. выходит данная ошибка: if __name__ == '__main__': access_token, _ =...

Создать клиент/серверное сетевое приложение для обмена текстовыми сообщениями
Создать клиент/серверное сетевое приложение для обмена текстовыми сообщениями через среду передачи данных стека TCP/IP. Для реализации...

Получить список друзей из контакта, предварительно залогинившись
Всем привет, помогите с кодом, как можно получить список друзей из контакта? Т.е. надо с начало надо авторизоваться, а потом получить...

VK api. Получить список друзей после авторизации на моём сайте
У меня в проекте (он веб) стоит авторизация ВК. Когда человек входит ей, я получаю его айди, и пытаюсь получить его друзей по id, используя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru