我希望获得我自己的 IP 地址,以便将该信息发布到对等网络中。在 POSIX/C 中,我们有getaddrinfo(NULL, ...),但这似乎总是返回INADDR_ANYor INADDR_LOOPBACK,这对我来说没用。
有什么建议?
我已经通过/etc/network/interfaces(分发是 Debian Squeeze)为我的专用主机分配了一个 /64 IPv6 子网
iface eth0 inet6 static
address 2a01:4f8:XXXX:YYYY::2
netmask 64
gateway fe80::1
Run Code Online (Sandbox Code Playgroud)
现在,我想让 cURL (PHP 5.3.22-1~dotdeb.0) 使用该子网的一个特定 IP 地址 pe,2a01:4f8:XXXX:YYYY::3因此我的代码如下所示:
curl_setopt($this->_curl, CURLOPT_INTERFACE, '2a01:4f8:XXXX:YYYY::3');
curl_setopt($this->_curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
Run Code Online (Sandbox Code Playgroud)
跑步时curl_exec我得到bind failed with errno 99: Cannot assign requested address. 为什么会发生这种情况?在将每个 IPv6 地址定义为 /128 时/etc/network/interfaces,例如:
iface eth0 inet6 static
address 2a01:4f8:XXXX:YYYY::2
netmask 128
up ip -6 addr add 2a01:4f8:XXXX:YYYY::3/128 dev eth0 preferred_lft 0
gateway fe80::1
Run Code Online (Sandbox Code Playgroud)
那么一切都很好,cURL 使用::3IP。但是我的意图是使用我子网中的大量 IP(真的很多 IP),因此这是不切实际的。有谁知道为什么 …
我正在使用Apache HttpClient生成Post请求并提交数据.由于远程应用程序在提交数据的用户的IP地址上进行中继,因此我想发送用户指定IP地址的发布请求.
我该如何配置?
public static void loginUser(String username, String password, String ip) throws Exception{
try {
HttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://login.myapp.com/");
// Request parameters and other properties.
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("username",username));
params.add(new BasicNameValuePair("password", password));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
// Execute and get the response.
HttpResponse response = client.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
//etc....
}
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:为避免混淆,
我想在httprequest标头中包含自定义IP地址,以便最终应用程序知道,[来自我的应用程序]的此请求来自自定义IP地址,但不是来自我的应用程序运行的IP地址
假设我的应用程序在服务器上运行,IP地址为"1.1.1.0".现在我的用户正在使用"test","test","199.199.199.0"执行loginUser方法.现在,从应用程序到目标URL的HTTP请求应该是从"199.199.199.0"发送的
问:编写一个程序,提示用户输入 IP 地址,然后将其转换为以 10 为基数的二进制和十六进制值。然后程序将十六进制值转换为 RFC3056 IPv6 6to4 地址。
我有基本的 10 和二进制部分工作,但我似乎无法理解十六进制部分。可以以某种方式使用格式字符串方法来完成同样的事情吗?或者在这种情况下我需要导入 ipaddress 模块吗?
#!/usr/bin/python3
ip_address = input("Please enter a dot decimal IP Address: ")
"""This part converts to base 10"""
ListA = ip_address.split(".")
ListA = list(map(int, ListA))
ListA = ListA[0]*(256**3) + ListA[1]*(256**2) + ListA[2]*(256**1) + ListA[3]
print("The IP Address in base 10 is: " , ListA)
"""This part converts to base 2"""
base2 = [format(int(x), '08b') for x in ip_address.split('.')]
print("The IP Address in base 2 is: ", base2) …Run Code Online (Sandbox Code Playgroud) 在过去我用过
$ip = $_SERVER["REMOTE_ADDR"];
Run Code Online (Sandbox Code Playgroud)
哪个会返回客户端的IP.我最近开始使用Heroku托管我的网站,我发现上面的代码不再返回客户端IP.
有人遇到过这个吗?如果我的网站使用Heroku托管,我将如何使用PHP获取客户端的真实IP地址?
我正在使用Xamarin.Android并编写以下代码:
public TextView text;
text = FindViewById<TextView>(Resource.Id.viewIP);
foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName()))
{
text.Text = "IP Adress: " + adress;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我打开应用程序时,它会立即关闭.我使用正确的方法来获取设备的IP地址吗?
是否可以在同时使用 IPv4 和 IPv6 的双栈环境中测试 IP 地址的等效性?如果是这样,如何?
我的应用程序在 Boost ASIO 之上使用websocket++。
例如,在我的 LAN 上,一个应用程序连接到另一个侦听192.168.1.2,但使用此答案的 IP 地址获取器
std::string s = socket.remote_endpoint().address().to_string();
Run Code Online (Sandbox Code Playgroud)
给::ffff:192.168.1.3作为客户的地址。
问题是.2它将拥有自己的节点列表,其中包含原始 v4 地址 for .3,因此通过上面的 getter 与磁盘上保存的 v4 版本的简单字符串比较,.3即使已经连接,它也会寻找冗余连接。
我进一步读到事情可能会变得更加复杂,因为通过这个点分四元表示法,::ffff:192.0.2.128也是::ffff:c000:0280.
我正在构建一个接受来自不受信任来源的地址的 p2p 应用程序,因此为了防止冗余连接,我需要能够绝对测试等效性。
我的意图可以实现吗?如果是这样,如何?如果没有,我应该只使用 v4 吗?我宁愿现在就包含未来的功能,而不是担心以后的集成。
我正在使用PHP,MySQL和Redis开发API,并希望对特定的调用进行速率限制.API位于CloudFlare后面.为了实现这一点,我将增加每个IP地址每小时对Redis中特定呼叫的计数,如果超过限制则会出现错误.
但是,我相信我遇到了IP地址欺骗问题.我知道真正的客户端如果欺骗他们的IP地址将永远不会收到回复,但这对于诸如创建帐户呼叫之类的呼叫可能不是必需的.客户端可以通过注册许多具有不同IP的帐户来有效地创建DoS攻击,同时避免速率限制.这会导致我的系统发送大量欢迎电子邮件(导致我的服务器被标记为垃圾邮件),如果他们的电子邮件帐户被恶意注册,可能会阻止用户注册.如何避免这种情况?
我的想法:
HTTP_CF_CONNECTING_IP标题时是不是被欺骗了?感谢您的帮助和建议.
如何以编程方式更改 mac osx 上的代理设置。我精通ios,由于mac os 编程类似,所以应该不会有太大问题。但是,我缺乏以编程方式创建代理更改所需的逻辑。手动调整非常容易。这是我所追求的系统偏好设置中的网络选项卡:
我尝试过的:
let dynamicStore: SCDynamicStoreRef = SCDynamicStoreCreate(nil, "setProxy" as CFString, nil, nil)!
let updated = SCDynamicStoreSetValue(dynamicStore, "HTTPProxy" as CFStringRef, "111.222.333.1") // updated is false, indicating unsuccessful operation
Run Code Online (Sandbox Code Playgroud)
也试过这个,但返回的字典是只读的
let dynamicStore: SCDynamicStoreRef = SCDynamicStoreCreate(nil, "myFunc" as
CFString, nil, nil)!
let proxyDict = SCDynamicStoreCopyProxies(dynamicStore)
if let proxyDict = SCDynamicStoreCopyProxies(dynamicStore) as NSDictionary? {
if let port = proxyDict["HTTPPort"] as? Int {
print("HTTPPort:", port)
proxyDict["HTTPPort"] = 8088; // can't do that
}
}
Run Code Online (Sandbox Code Playgroud)
我的想法不多了。
如何在AWS中确定子网IPv4 CIDR地址.假设我的VPC CIDR块是172.31.0.0/16并且我想创建一个172.31.1.0/16的子网,但它说"***不在****/*的范围内.请解释我如何确定CIDR?
ip-address ×10
php ×3
ipv6 ×2
subnet ×2
amazon-vpc ×1
api ×1
boost-asio ×1
c ×1
c# ×1
c++ ×1
cloudflare ×1
cocoa ×1
curl ×1
equivalence ×1
heroku ×1
hex ×1
http ×1
java ×1
macos ×1
networking ×1
posix ×1
proxy ×1
python ×1
security ×1
spoofing ×1
vpc ×1
websocket++ ×1
xamarin ×1