Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713

Сетевое программирование

16.01.2015, 13:29. Показов 1536. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал изучать работу с сетью, возникла не большая проблема. Не знаю как реализовать передачу имени от клиента на сервер(т.е перед подключением клиент к серверу, клиент вводит свое имя для отобрадения в чате)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.01.2015, 13:29
Ответы с готовыми решениями:

Сетевое программирование
Добрый день) Передо мной стоит следующая задача: Необходимо написать сетевую игру, но игроки должны не сами прописывать IP друг друга,...

C# и низкоуровневое сетевое программирование
Здравствуйте, мне надо отослать TCP пакет с IP адресом, отличным от настоящего. Узнал, что это можно сделать благодаря WinPcap(для шарпа...

Сетевое программирование для начинающих
Доброго времени суток форумчане. Столкнулся с проблемой поиска литературы по сетевому программированию под .Net. Хотелось бы разобраться...

5
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
16.01.2015, 14:05
как и все остальные данные после подключения клиента к серверу
2
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
16.01.2015, 21:02  [ТС]
pro_100_gram, спасибо. А еще такой вопрос вот клиент отправил сообщение на сервер ,запущен еще клиент но он не получил это сообщение как быть?полученое сообщение рассылать всем подключенным сокетам или как

Добавлено через 52 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
class Program
    {
        private static byte[] _buffer=new byte[1024];
        private  static Socket _serverSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
        private static List<Socket> _clientSockets= new List<Socket>();
        static void Main(string[] args)
        {
            SetupServer();
            Console.ReadLine();
 
        }
 
        private static void SetupServer()
        {
            Console.WriteLine("Setting up serer...");
            _serverSocket.Bind(new IPEndPoint(IPAddress.Any,100));
            _serverSocket.Listen(5);
            _serverSocket.BeginAccept(new AsyncCallback(AcceptCallBack), null);
          
        }
 
        private static void AcceptCallBack(IAsyncResult AR)
        {
            Socket socket = _serverSocket.EndAccept(AR);
            _clientSockets.Add(socket);
            Console.WriteLine("Client connected");
            socket.BeginReceive(_buffer,0,_buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveCallBack),socket);
            _serverSocket.BeginAccept(new AsyncCallback(AcceptCallBack), null);
        }
 
        private static void ReceiveCallBack(IAsyncResult Ar)
        {
            Socket socket = (Socket) Ar.AsyncState;
            int received = socket.EndReceive(Ar);
            byte[] data=new byte[received];
            Array.Copy(_buffer,data,received);
 
            string text = Encoding.ASCII.GetString(data);
            Console.WriteLine("Text received: "+ text);
 
            string response = string.Empty;
            if (text.ToLower()!="get time")
            {
                byte[] dataT = Encoding.ASCII.GetBytes(text);
                foreach (Socket clientSocket in _clientSockets)
                {
                    clientSocket.Send(dataT);   //вот тут пытаюсь отправить всем сокетам подключенным
                }
            }
            else
            {
                response = DateTime.Now.ToLongTimeString();
                byte[] dataT = Encoding.ASCII.GetBytes(response);
                socket.BeginSend(dataT, 0, dataT.Length, SocketFlags.None, new AsyncCallback(SendCallBack), socket);
                socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallBack), socket);
            }
 
            
        }
 
        private static void SendCallBack(IAsyncResult Ar)
        {
            Socket socket = (Socket) Ar.AsyncState;
            socket.EndSend(Ar);
        }
 
    }
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
16.01.2015, 21:19
jecus, ну да.
C#
1
2
3
4
foreach (Socket clientSocket in _clientSockets)
{
       clientSocket.Send(dataT);   //вот тут пытаюсь отправить всем сокетам подключенным
}
но можно отправить IP и при подключении не дожидаясь сообщений от клиента перед этой строчкой

C#
1
socket.BeginReceive(_buffer,0,_buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveCallBack),socket);
2
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
16.01.2015, 21:22  [ТС]
pro_100_gram, у меня проблема в клиенте скорее всего ответ приходит только после того как я отправляю запрос. Как от этого избавиться?
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
16.01.2015, 21:38
возможно это из-за того что ответ приходит клиенту позже чем клиент отправляет запрос. попробуйте для проверки отправить
C#
1
2
3
4
5
6
7
8
9
        private static void AcceptCallBack(IAsyncResult AR)
        {
            Socket socket = _serverSocket.EndAccept(AR);
            _clientSockets.Add(socket);
            Console.WriteLine("Client connected");
            socket.BeginReceive(_buffer,0,_buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveCallBack),socket);
            socket.Send(Convert.ToString(socket.RemoteEndPoint as IPEndPoint).Address);
            _serverSocket.BeginAccept(new AsyncCallback(AcceptCallBack), null);
        }
и ответ на запрос. и посмотрите что придет первым
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2015, 21:38
Помогаю со студенческими работами здесь

Сетевое программирование. Передача больших массивов данных
Здравствуйте! Занимаюсь разработкой одного проекта. На входе есть клиент и сервер. Клиент подключается к серверу, отправляет request,...

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

Программирование ветвлений и программирование циклов
Разбираюсь в двух поставленных выше темах.Нужны примеры двух программ.Язык C#. 1)В первой программе вычислить значение функции по...

Сетевое приложение для работы с заявками на ремонт в IT отделе
Имеется организация, необходимо разработать программу заявок на ремонт в IT отдел. Допустим у кого-то сломался принтер он пишет админу, а у...

Сетевое программирование
вопрос в общем такой, есть консольный не сложный чат на UDP, но для отправки сообщений, все равно необходимо знать айпи... как сделать...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru