Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Программа для общения в сети


Автор: ZuTa 12.4.2011, 20:26
Всем привет!

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

Есть сервер.
На сервере будет БД юзеров.

Юзер регистрируеться(его данные заносять соответственно в БД на сервере).
Потом юзер может добавить в свой контакт лист других юзеров (воспользовавшись поиском по БД на сервере по каким-то ключевым словом)

ну и потом уже само общение между 2 юзерами.

я никогда не писал таких программ. по-этому прошу советов . что почитать ? где ? 
пишу на С#. какой это проект должен быть ? 

Надеюсь объяснил всё понятно. Если что, не ругайте, я начинающей  smile 



Автор: Экскалупатор 12.4.2011, 21:56
Цитата(ZuTa @  12.4.2011,  19:26 Найти цитируемый пост)
пишу на С#. какой это проект должен быть ? 

проработай архитектуру, тогда станет ясно какой это проект. очевидно напрашивается два проекта, собственно сервер и клиент(хотел встречал реализацию где любой клиент мог становиться сервером).

вообще в гугле полно ссылок http://www.google.by/search?q=%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9+%D1%87%D0%B0%D1%82+C%23&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox с примерами и пр. почитай я думаю во многом разберешься.

Автор: ZuTa 27.4.2011, 21:09
Ребята, подскажите пожалуйста, как вызвать функции, которые находяться на сервере, из клиента ?

Автор: Экскалупатор 27.4.2011, 22:14
http://ru.wikipedia.org/wiki/Windows_Communication_Foundation?

Автор: ZuTa 27.4.2011, 22:36
кажется, можна как-то через .Net Remoting, но как?

Автор: Экскалупатор 27.4.2011, 22:51
ага, а можно еще через сокеты. но через WCF проще и лучше, это следующая за remoting технология

Автор: ZuTa 27.4.2011, 23:46
Планировал сделать сервер консольным, а клиент - wpf

теперь wcf проект будет клиентом или как?

Автор: Экскалупатор 27.4.2011, 23:57
WCF выполняет те же функции что и remoting(ну конечно же это большое упрощение), т.е. он выполняет связь чего то по сети, распределенные приложения и пр. он в принципе не влияет на твой проект в плане его пользовательского интерфейса. если хочешь консольный сервер то делай консольный, если хочешь WPF то делай WPF.

Добавлено через 1 минуту и 2 секунды
Цитата(ZuTa @  27.4.2011,  22:46 Найти цитируемый пост)

теперь wcf проект будет клиентом или как?

у тебя обе части будут использовать wcf(точно так же как обе части использовали бы remoting). wcf просто осуществляет транспорт между ними.

Автор: ZuTa 28.4.2011, 00:02
Так я не понял, мне не нужно будет создавать wcf проект ?


Автор: Экскалупатор 28.4.2011, 00:24
при чем тут тип проекта?

Добавлено через 58 секунд
проект можно создавать любой, просто потом в него надо добавить нужные для работы с WCF сборки. найди любую книжку и сразу во всем разберешься

Автор: ZuTa 28.4.2011, 11:33
Хорошо, спасибо! Понял!

Почитаю книгу...

Автор: ZuTa 1.5.2011, 10:32
Решил для начала написать приложение с использованием сокетов, а потом на wcf

На сервере написал что-то такое :

Код

   server = new TcpListener(IPAddress.Any, Properties.Settings.Default.Port);
  server.Start();
            Console.WriteLine("Server is running...");
            while (true)
            {
                Socket clientSocket = server.AcceptSocket();
                // ...
                // Получаем то, что нам клиент прислал
                int bytesRead = clientSocket.Receive(requestBuffer);
                // ...
                // Отправляем ответ на полученное
                response = Encoding.ASCII.GetBytes(((int)result).ToString());
                // ... 
                clientSocket.Send(response);
                clientSocket.Close();
            }


Вопрос, если одновременно подключиться несколько клиентов к серверу, как он себя поведет ?
возникнет очередь ? 

или такая логика для сервера неправильна?

Автор: ZuTa 4.5.2011, 21:23
Такая проблема :
я отправляю с клиента 4 запроса к серверу(почти одновременно) и получается так что сервер 2 запроса нормально обработал, а 3 и 4 объеденил в один!

как можно решить эту проблему? отправляю и принимаю через сокеты.



Автор: -Mikle- 5.5.2011, 06:47
Модератор: Пожалуйста, один топик - один вопрос.
Модератор: Название темы должно отражать ее суть!

Правила форума: http://forum.vingrad.ru/index.php?act=boardrules

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)