C#에서 로컬 IP 주소 가져 오기
-
C#에서
Dns.GetHostEntry()
함수를 사용하여 로컬 IP 주소 가져 오기 -
C#에서
Socket.LocalEndPoint
속성을 사용하여 로컬 IP 주소 가져 오기 - C#에서 Linq를 사용하여 로컬 IP 주소 가져 오기
-
C#에서
NetworkInterface
클래스를 사용하여 로컬 IP 주소 가져 오기
이 자습서에서는 C#에서 컴퓨터의 로컬 IP 주소를 가져 오는 방법에 대해 설명합니다.
C#에서Dns.GetHostEntry()
함수를 사용하여 로컬 IP 주소 가져 오기
Dns
클래스는 인터넷의 호스트와 관련된 정보를 가져옵니다. Dns
클래스에는 C#의 DNS 관련 기능에 대한 많은 메서드가 있습니다. Dns.GetHostEntry()
함수를 사용하여 호스트의 IP 주소.
다음 코드 예제는 C#에서Dns.GetHostEntry()
함수를 사용하여 시스템의 로컬 IP 주소를 얻는 방법을 보여줍니다.
using System;
using System.Net;
namespace get_local_ip_address {
class Program {
static void Main(string[] args) {
String strHostName = string.Empty;
IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++) {
Console.WriteLine("IP Address {0}: {1} ", i, addr[i].ToString());
}
}
}
}
출력:
IP Address 0: fe80::1db8:23a7:6483:8976%20
IP Address 1: 192.168.43.239
위의 코드에서Dns.GetHostName()
함수를Dns.GetHostEntry()
함수의 매개 변수로 전달하여 C#에서 로컬 머신의 IP 주소를 가져 왔습니다. 이 방법의 유일한 문제는 시스템의 모든 IP 주소를 제공한다는 것입니다. 특정 IP 주소를 얻으려면 C#으로 다음 코드를 작성해야합니다.
using System;
using System.Net;
namespace get_local_ip_address {
class Program {
static void Main(string[] args) {
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList) {
if (ip.AddressFamily == AddressFamily.InterNetwork) {
Console.WriteLine("IP Address = " + ip.ToString());
}
}
}
}
}
출력:
IP Address = 192.168.43.239
위 코드에서ip.AddressFamily
가 AddressFamily.InterNetwork
와 같은지 확인했습니다. ? view = net-5.0). 이 조건은ip
변수의 IP 주소가 IPv4 주소인지 여부를 확인합니다. 위의 코드는 우리 컴퓨터의 IPv4 주소 만 반환합니다. 시스템의 IPv6 주소를 얻으려면AddressFamily.InterNetwork
대신AddressFamily.InterNetworkV6
속성을 사용할 수 있습니다.
C#에서Socket.LocalEndPoint
속성을 사용하여 로컬 IP 주소 가져 오기
여러 개의 IP 주소가있을 때 머신의 로컬 IP 주소를 얻는보다 정확한 방법은 UDP 소켓을 연결 한 다음 로컬 엔드 포인트를 읽는 것입니다. C#의 Socket
클래스는 네트워크 통신 기능을 제공하는 Berkeley 소켓 인터페이스를 구현합니다. 다음 코드 예제는 Socket.LocalEndPoint
속성을 사용하여 C#에서 컴퓨터의 로컬 IP 주소를 결정하는 방법을 보여줍니다.
using System;
using System.Net;
using System.Net.Sockets;
namespace get_local_ip_address {
class Program {
static void Main(string[] args) {
string localIP = string.Empty;
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0)) {
socket.Connect("8.8.8.8", 65530);
IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
localIP = endPoint.Address.ToString();
}
Console.WriteLine("IP Address = " + localIP);
}
}
}
출력:
IP Address = 192.168.43.239
위 코드에서socket
소켓을 로컬 머신에 연결하고socket.LocalEndPoint
속성을 사용하여socket
의 로컬 엔드 포인트를 추출했습니다. endPoint.Address
속성을 사용하여endPoint
의 IP 주소를 얻었습니다.
C#에서 Linq를 사용하여 로컬 IP 주소 가져 오기
Linq 또는 언어 통합 쿼리는 C#에서 SQL 기능을 제공합니다. 또한 Linq 및Dns.GetHostEntry()
함수를 사용하여 C#에서 컴퓨터의 로컬 IP 주소를 가져올 수 있습니다.
다음 코드 예제는 Linq를 사용하여 C#에서 컴퓨터의 로컬 IP 주소를 얻는 방법을 보여줍니다.
using System;
using System.Linq;
using System.Net;
namespace get_local_ip_address {
class Program {
static void Main(string[] args) {
if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) {
Console.WriteLine("No Network Available");
}
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
var ippaddress =
host.AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork);
Console.WriteLine(ippaddress);
}
}
}
출력:
192.168.43.239
위 코드에서 C#의Dns.GetHostEntry()
함수와 함께 Linq를 사용하여 머신의 로컬 IPv4 주소를 결정했습니다. 나머지 코드는 첫 번째 예제와 유사합니다. 유일한 차이점은Dns.GetHostEntry()
함수가 반환 한 주소 목록에서 IPv4 주소를 하나만 추출했다는 것입니다.
C#에서NetworkInterface
클래스를 사용하여 로컬 IP 주소 가져 오기
NetworkInterface
클래스에는 로컬 컴퓨터의 네트워크 인터페이스에 대한 데이터가 포함됩니다. 네트워크 인터페이스에 대한 통계 및 구성을 제공합니다. NetworkInterface
클래스의 GetAllNetworkInterfaces()
함수 로컬 머신의 모든 네트워크 인터페이스를 제공합니다. NetworkInterface
클래스의 NetworkInterfaceType
속성이 사용됩니다. 네트워크 인터페이스의 유형을 가져옵니다.
다음 코드 예제는 이러한 모든 함수를 사용하여 C#에서 로컬 컴퓨터의 로컬 IP 주소를 얻는 방법을 보여줍니다.
using System;
using System.Linq;
using System.Net;
namespace get_local_ip_address {
class Program {
public static void getLocalIPAddressWithNetworkInterface(NetworkInterfaceType _type) {
string output = "";
foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces()) {
if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up) {
foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses) {
if (ip.Address.AddressFamily == AddressFamily.InterNetwork) {
output = ip.Address.ToString();
}
}
}
}
Console.WriteLine("IP Address = " + output);
}
static void Main(string[] args) {
getLocalIPAddressWithNetworkInterface(NetworkInterfaceType.Wireless80211);
}
}
}
출력:
IP Address = 192.168.43.239
위 코드에서 C#의NetworkInterface
클래스를 사용하여 로컬 컴퓨터의 WLAN IPv4 주소를 검색했습니다. 위의 코드는 로컬 컴퓨터에서 모든 유형의 IP 주소를 가져 오는 데 사용할 수 있습니다. 예를 들어, 이더넷 인터페이스의 IP 주소를 얻으려면NetworkInterfaceType.Ethernet
을 전달하여 함수 호출에 지정해야합니다.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn