Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Nikita2480
0 / 0 / 1
Регистрация: 05.07.2013
Сообщений: 20
1

Сделать так чтобы при подключении нулевого порта выполнялся один цикл кода а при подключении другого - другой

08.05.2014, 12:40. Просмотров 646. Ответов 4
Метки нет (Все метки)

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

Вот код только для нулевого порта. Всяко пытался ничего не получается=(
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
static void Main(string[] args)
        {
 
            IPHostEntry ipHost = Dns.GetHostEntry("localhost");
            IPAddress ipAddr0 = ipHost.AddressList[0]; // соединение для 0 порта
           // IPAddress ipAddr1 = ipHost.AddressList[1]; // вот типо такого олжно получиться
 
 
 
            
                IPEndPoint ipEndPoint0 = new IPEndPoint(ipAddr0, 11000);
 
                Socket sListener0 = new Socket(ipAddr0.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
                try
                {
                    sListener0.Bind(ipEndPoint0);//назначаем порт
                    sListener0.Listen(10);
 
                    // Начинаем слушать соединения
                    while (true)
                    {
                        Console.WriteLine("Ожидаем соединение через порт {0}", ipEndPoint0);
 
                        Socket handler = sListener0.Accept();
                        string data = null;
 
                        byte[] bytes = new byte[1024];
                        int bytesRec = handler.Receive(bytes);
 
                        data += Encoding.UTF8.GetString(bytes, 0, bytesRec);
 
                        Console.Write("Полученный текст: " + data + "\n\n");
 
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                finally
                {
                    Console.ReadLine();
                }
            
            }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 12:40
Ответы с готовыми решениями:

Как сделать так, чтобы при подключении адаптера издавался звук?
Как сделать так, чтобы при подключении адаптера издавался звук на ноутбуке hp (Операционная система...

Как сделать так, чтобы при подключении по RDP не указывать порт?
Добрый день поменял порт через регистр с 3389 на 3811 , теперь надо при подключении порт...

Как сделать так, чтобы при подключении к сетевому принтеру не запрашивались логин и пароль?
Есть локальная сеть, подключено все свитчом. Вчера купили новый принтер, его подключили к...

Есть ли способ сделать так, чтобы при подключении к сети, онкомпьютер автоматически передал мне свой ip адрес?
У меня есть компьютер, который в скором времени должны забрать. Есть ли способ сделать так, чтобы...

Сделать так чтобы при запуске страницы выполнялся код только из первой формы
aspx код разнес в 2 формы, через тег <form>, возможно ли как нибудь сделать так чтобы при запуске...

4
EVG-1980
190 / 197 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
08.05.2014, 13:09 2
Nikita2480, для начала надо понять что ты делаешь

C#
1
 IPAddress ipAddr0 = ipHost.AddressList[0]; // AddressList - это массив к котором содержаться все IP  адреса твоей машины  (если в машине несколько сетевых карт то и в массиве будет несколько IP адресов )
Добавлено через 14 минут
C#
1
2
3
4
5
6
7
8
9
10
 static void Main()
        {
            //узнаем все IP адреса на машине
            IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in ipHostInfo.AddressList)
            {
                Console.WriteLine(ip); 
            }
            Console.ReadKey();
        }

C#
1
2
3
4
5
//будем слушать все сетевые карты на 11000 порту
IPEndPoint ipEndPoint0 = new IPEndPoint("0.0.0.0", 11000);
Socket sListener0 = new Socket(ipAddr0.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
sListener0.Bind(ipEndPoint0);
sListener0.Listen(10);
1
Nikita2480
0 / 0 / 1
Регистрация: 05.07.2013
Сообщений: 20
08.05.2014, 16:58  [ТС] 3
Спасибо за AddressList. То есть теперь нам не важно по какому порту будет передаваться, а мне бы хотелось сделать так чтобы отсылая сообщение от одного клиента по порту 0 допустим выполнялся один цикл а при отправке с другого клиента по порту 1 другой цикл.

C#
1
2
3
4
5
6
7
8
9
10
11
IPHostEntry ipHost = Dns.GetHostEntry("localhost");
            IPAddress ipAddr0 = ipHost.AddressList[0];
 
            IPEndPoint ipEndPoint0 = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 11000);
 
                Socket sListener0 = new Socket(ipEndPoint0.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
                try
                {
                    sListener0.Bind(ipEndPoint0);//назначаем порт
                    sListener0.Listen(10);
Так?

А в клиенте что нужно тогда изменить?

C#
1
2
3
4
5
6
7
8
9
10
11
byte[] bytes = new byte[1024];
            IPHostEntry ipHost = Dns.GetHostEntry("localhost");
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);// port);
            Socket senderr = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            senderr.Connect(ipEndPoint);
 
            string cmd;
            cmd = tbsyrname.Text;
            byte[] msg = Encoding.UTF8.GetBytes(cmd);
            int bytesSent = senderr.Send(msg);
Добавлено через 2 часа 46 минут
EVG-1980, Или вот так?
C#
1
2
3
4
5
6
7
8
9
10
11
IPHostEntry ipHost = Dns.GetHostEntry("localhost");
 
 
            IPEndPoint ipEndPoint0 = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 11000);
 
                Socket sListener0 = new Socket(IPAddress.Parse("0.0.0.0").AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
                try
                {
                    sListener0.Bind(ipEndPoint0);
                    sListener0.Listen(10);
и

C#
1
2
3
4
5
6
7
8
9
10
11
byte[] bytes = new byte[1024];
            IPHostEntry ipHost = Dns.GetHostEntry("localhost");
           // IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 11000);// port);
            Socket senderr = new Socket(IPAddress.Parse("0.0.0.0").AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            senderr.Connect(ipEndPoint);
 
            string cmd;
            cmd = tbsyrname.Text;
            byte[] msg = Encoding.UTF8.GetBytes(cmd);
            int bytesSent = senderr.Send(msg);
0
EVG-1980
190 / 197 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
08.05.2014, 17:07 4
Nikita2480, ты не понимаешь что делаешь , я тебе не могу объяснить как написать многопоточный клиент сервер с твоими познаниями

Единственное что могу посоветовать гугли асинхронный клиент сервер
1
Nikita2480
0 / 0 / 1
Регистрация: 05.07.2013
Сообщений: 20
08.05.2014, 17:48  [ТС] 5
Хорошо спасибо и на этом))
0
08.05.2014, 17:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 17:48

Как сделать так, чтобы цикл выполнялся определенное количество раз в Pascal?
Нужно сделать так, чтобы пользователь ввел какое-то число и цикл выполнился такое число раз,...

При первом нажатии кнопки - выполнялся один код,при повторном другой и тд
Имеется код : document.onkeydown = function(z) { if (z.keyCode=="120") { var h =...

Как сделать, чтобы с флешки при её подключении запускалась программа?
Нужно сделать чтобы после того как я вставлю флешку, запускалась на ней определенная программа, как...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru