Instant Messaging: строим свой клиент Косякин Антон Xakep, номер #062, стр. 062-118-2 Если твоей системой будет пользоваться много народу, то необходимо заботиться о трафике системы (в прошлый раз я уже немного говорил на эту тему). И самое главное, что тебе нужно сделать - реализовать "общение" клиентских программ между собой, минуя при этом сервер. Предлагаю следующую схему: пользователь Обрезалкин логинится в систему, сервер определяет его IP-адрес и запоминает. А наш пользователь заодно сообщает, что он открыл на прослушивание порт номер 12345 ;). И вот в онлайн выходит еще один пользователь, по прозвищу Бурундук. Прознав об этом, наш Обрезалкин хочет с ним пообщаться. Он передает серверу сообщение о запросе соединения. Сервер его передает Бурундуку. Поразмыслив, тот соглашается и отправляет подтверждение первому пользователю. Сервер, увидев передаваемое подтверждение, сообщает Бурундуку IP-адрес и порт, на котором ждет соединения Обрезалкин. На этом роль сервера заканчивается. Многомегабайтный трафик от горячей дискуссии идет по другим каналам :). Несмотря на то, что для передачи небольших сообщений этот вариант работы сервера необязателен (но желателен), для передачи файлов он крайне необходим. Также обращаю твое внимание на то, что IP-адрес и порт должны сообщаться именно адресату, а не тому, кто хочет передать сообщение. В противном случае любого пользователя твоей системы можно будет очень легко зафлудить! Оформление Ну-с, переходим к самой приятной (и трудоемкой!) части написания клиента – его оформлению (и почему-то меня терзают смутные сомнения, что ты уже давно все это сделал :)). Сразу оговорюсь - я в этом деле абсолютное бревно, поэтому никаких советов в плане выбора цветовых схем, расположения кнопок и прочей лабуды от меня не жди :). С дизайном клиента предлагаю поступить следующим образом. Все мы знаем, что когда пользователь приступает к работе с новой для него программой, в его голове присутствует опыт со времен прошлых встреч с компьютером, есть определенные мнения и ожидания по поводу того, как программа должна и будет работать. Или если наш пользователь использовал какие-нибудь другие программы, то он подумает, что эта новая программа должна подчиняться каким-то определенным общим правилам. И у него даже могут быть совершенно разумные (!) мысли о том, как будет работать интерфейс этой программы. И тут он натыкается на твое чудо и ме-е-едленно зависает :). |