IP-адреса и номера портов C # - PullRequest
1 голос
/ 03 декабря 2011

Я создаю программу чата.Думаю, я немного сбит с толку относительно того, как работают MSN и другие чаты?В настоящее время я добавляю IP-адрес localhost и просто подключаюсь к себе.Я могу заставить мои клиентские и серверные программы взаимодействовать друг с другом.У меня вопрос, есть ли способ, где я не могу попросить пользователя IP-адрес?Я также вручную ввожу номер порта, к которому я хочу подключить обе программы.Есть ли способ избежать этого тоже?

Я бы очень хотел попросить пользователя только имя пользователя и пароль!

После небольшого исследования я узнал о следующем:

IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());

Однако строка кода выше возвращает все IP-адреса машины.Как я узнаю, какой использовать?

Я не очень разбираюсь в IP-адресах, поэтому любая справочная информация и помощь были бы офигенными.

Ответы [ 3 ]

2 голосов
/ 03 декабря 2011

Программы чата используют серверы для поиска клиентов. При входе в систему - вы подключаетесь к этому серверу и передаете свой IP-адрес. При этом вы получаете адреса других клиентов.

Это 2-мильный вид, но я думаю, это то, что вам нужно было знать

Вы можете использовать DNS или имена хостов в вашем приложении.

Чтобы получить DNS-имя вашего ПК:

System.Net.Dns.GetHostName()

Чтобы получить IP-адрес вашего компьютера, используйте что-то вроде этого:

var ips = System.Net.Dns.GetHostEntry(hostName);
                for (var i = 0; i <= ips.AddressList.Length - 1; i++)
                {
                    if (ips.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                        return ips.AddressList[i].ToString();
                }
0 голосов
/ 03 декабря 2011

В настоящее время я добавляю IP-адрес localhost и просто подключаюсь к себе. Я могу получить мои клиентские и серверные программы общаются взад и вперед. У меня вопрос, есть ли способ, где я НЕ МОЖЕТЕ спросить у пользователя IP-адрес?

Программное обеспечение для чата работает, пропуская весь трафик через центральный ИЗВЕСТНЫЙ сервер. Итак, вы хотите разместить программу чата на веб-сайте, который пользователь затем подключается к серверу, на который он входит (IRC), или к серверу с жестким кодом (MSN). В первой части нет, пользователь должен решить, куда подключиться, во втором ВЫ жестко кодируете значение, поэтому спрашиваете, как это сделать, чтобы выглядеть не слишком умно - это базовое программирование.

Вы НЕ узнаете свой IP-адрес, потому что это нелепый подход - ваш IP даже в большинстве случаев недоступен. Вы используете способ, где КЛИЕНТ ВСЕГДА подключается к серверу, а сервер отправляет данные клиенту, используя это соединение, потому что большинство людей находятся за устройствами NAT, поэтому их компьютер нелегко достать из Интернета.

0 голосов
/ 03 декабря 2011

Вы, кажется, немного запутались, возможно, это прояснит вам.Сервер - единственный, кто должен знать IP-адрес (обычно определяется по имени DNS, например chat.mydomain.com или как-то еще)Как только клиент получит этот IP-адрес, он подключится к серверу.КЛИЕНТУ НЕ НУЖНО ЗНАТЬ СВОЙ IP для подключения.Это определяется автоматически и находится вне вашего контроля.Как только клиент успешно подключился, тогда и только тогда вы можете начать отправлять такие вещи, как имя пользователя и пароль.

...