2011-12-03 5 views
1

채팅 프로그램을 만들고 있습니다. 나는 MSN과 다른 채팅이 어떻게 작동하는지 혼란 스럽다. 현재, 나는 localhost IP 주소를 넣고 있고 나 자신에게 연결하고있다. 내 클라이언트와 서버 프로그램을 앞뒤로주고받을 수 있습니다. 제 질문은 IP 주소를 묻지 못하는 방법이 있습니까? 또한 수동으로 두 프로그램을 연결하려는 포트 번호를 입력하십시오. 이것도 피할 수있는 방법이 있습니까?IP 주소 및 포트 번호 C#

나는 사용자 이름과 암호 만 묻는 것이 좋습니다.

연구의 조금 후에 난 다음에 대해 알고 나니

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

그러나, 코드의 라인은 위의 모든 컴퓨터의 IP 주소를 반환합니다. 어느 것을 사용해야하는지 어떻게 알 수 있습니까?

저는 IP 주소에 대해 잘 모르기 때문에 배경 정보와 도움이 정말 좋을 것 같습니다.

답변

2

채팅 프로그램은 서버를 사용하여 클라이언트를 찾습니다. 로그인 할 때 -이 서버에 연결하고 IP 주소를 전달합니다. 동시에 다른 고객의 주소를 얻을 수 있습니다.

이 2 마일이다 그러나 나는 이것이 당신이

당신은 응용 프로그램에서 DNS 또는 호스트 이름을 사용할 수 있습니다 알 필요가 무엇을 생각한다.

System.Net.Dns.GetHostName() 

이 같은 PC의 IP 주소를 사용 뭔가 얻으려면 :

은 PC의 DNS 이름을 얻으려면 당신은 약간 혼란스러워 보인다

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(); 
       } 
+1

응답 해 주셔서 감사합니다.좋아요,하지만 클라이언트에게 서버의 특정 IP 주소를 알려주려면 어떻게해야합니까? 어떻게이 값을 얻을 수 있을까요? – BigBug

+0

@BlueMonster 제 편집보기 – katit

+0

사실, 지금은 NAT 덕분에 어떻게 작동할까요? – TomTom

0

을, 어쩌면이 당신을 위해 그것을 정리합니다 . 서버는 IP를 어떻게 든 알아야 할 필요가있는 유일한 사람입니다 (보통 chat.mydomain.com 같은 DNS 이름을 통해 결정됩니다). 클라이언트에 해당 IP 주소가 있으면 클라이언트가 서버에 연결합니다. 연결하기 위해서는 클라이언트가 자신의 IP를 알아야합니다. 이는 자동으로 결정되며 귀하의 통제 범위를 벗어납니다. 클라이언트가 성공적으로 연결되면 사용자 이름과 비밀번호 같은 것을 보내기 시작할 수 있습니다.

0

현재 로컬 호스트의 IP 주소를 입력하고 있습니다. 내 클라이언트와 서버 프로그램간에 앞뒤로 의사 소통하는 을 얻을 수 있습니다. 제 질문은, 제가 사용자에게 IP 주소를 요청할 수없는 방법이 있습니까?

채팅 소프트웨어는 중앙 KNOWN 서버를 통해 모든 트래픽을 실행함으로써 작동합니다. 따라서 사용자가 입력 한 서버 (IRC) 또는 하드 코드 된 서버 (MSN)에 사용자가 연결하는 웹 사이트에 채팅 프로그램을 추가하려고합니다. 첫 번째 부분에서는 사용자가 연결할 위치를 결정해야하며, 두 번째 단계에서는 값을 하드 코드하므로 사용자가 너무 똑똑하지 않게 만드는 방법을 묻습니다. 이는 기본 프로그래밍입니다.

귀하의 IP 주소가 어리석은 방법이기 때문에 IP 주소를 알 수 없습니다. 대부분의 경우에도 IP에 접근 할 수 없습니다. 대부분의 사람들은 NAT 장치 뒤에 있기 때문에 클라이언트가 인터넷에 쉽게 연결할 수 없기 때문에 CLIENT가 서버에 항상 연결하고 서버는이 연결을 사용하여 클라이언트에 데이터를 보냅니다.