写一段获取ip代码
时间: 2023-08-06 19:21:05 浏览: 38
获取IP有多种方式,以下是一种Python代码实现:
```python
import socket
# 获取本机IP
def get_local_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
# 获取外网IP
def get_public_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
print("本机IP地址为:", get_local_ip())
print("外网IP地址为:", get_public_ip())
```
以上代码通过socket库中的getsockname()方法获取本机IP和外网IP。获取本机IP需要创建socket连接到本机的某个端口,获取外网IP需要连接到外网的某个IP地址,这里使用了Google的DNS服务器IP地址。
相关问题
c#写一段获取ip代码
以下是C#代码实现获取本机IP和外网IP:
```csharp
using System.Net;
using System.Net.Sockets;
class Program
{
static void Main(string[] args)
{
// 获取本机IP
string localIp = Dns.GetHostEntry(Dns.GetHostName())
.AddressList
.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork)
?.ToString();
// 获取外网IP
string publicIp = new WebClient().DownloadString("http://icanhazip.com").Trim();
Console.WriteLine("本机IP地址为:" + localIp);
Console.WriteLine("外网IP地址为:" + publicIp);
}
}
```
以上代码使用了Dns.GetHostEntry()方法获取本机IP和WebClient().DownloadString()方法获取外网IP。获取本机IP时,利用了Linq语句找到第一个IP地址族为IPv4的IP地址;获取外网IP时,利用了一个公共的IP地址查询网站http://icanhazip.com。
写一段远程获取主机ip的代码
以下是Python代码示例,使用socket库实现远程获取主机IP:
```python
import socket
def get_host_ip(remote_host):
try:
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((remote_host, 80))
# 获取本机IP地址
ip = s.getsockname()[0]
except socket.error:
ip = "127.0.0.1"
finally:
s.close()
return ip
# 测试
print(get_host_ip('www.baidu.com'))
```
解释:
1. 导入socket模块。
2. 定义一个名为get_host_ip的函数,接受一个参数remote_host,即要获取IP的远程主机。
3. 在try块中,创建一个socket对象s,并使用connect方法连接到远程主机的80端口。
4. 调用getsockname方法获取本机IP地址,并将其赋值给变量ip。
5. 在except块中,如果发生socket错误,则将IP地址设置为“127.0.0.1”。
6. 最后关闭socket对象s,并返回IP地址。
7. 调用get_host_ip函数,并打印输出结果。