我正在重构我的代码,并希望使用该IPAddress.TryParse方法来验证字符串是否是有效的IPv4地址而不是使用正则表达式:
public static bool IsIPv4(string value)
{
IPAddress address;
if (IPAddress.TryParse(value, out address))
{
if (address.AddressFamily == AddressFamily.InterNetwork)
{
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我的单元测试现在失败了,因为这些输入值返回true并被解析为以下IPAddress对象:
value = "0.0.0.0" -> address = {0.0.0.0}
value = "255.255.255" -> address = {255.255.0.255}
value = "65536" -> address = {0.1.0.0}
Run Code Online (Sandbox Code Playgroud)
这有意义吗?我可以看到这0.0.0.0在技术上是一个有效的IPv4地址,即使用户输入它也没有意义.那两个呢?为什么他们以他们的方式进行转换,我应该将它们视为有效,即使它对用户来说可能不是透明的,用户可能只是忘记输入句点(65536而不是6.5.5.36).
任何帮助都非常感谢.
我正在寻找一种简单的时钟同步协议,该协议易于实现,占用空间小,并且在没有互联网连接的情况下也可以工作,因此可以在封闭的实验室网络中使用.为了清楚起见,我不是在寻找可以仅用于命令事件(例如矢量时钟)的东西,而是能够使不同节点上的进程基于本地时钟同步其动作的东西.据我了解,这需要一个可以考虑时钟漂移的解决方案.可以假设存在TCP/IP或类似的相对低延迟的流连接.
好的,我们都知道如何使用PING来测试与IP地址的连接.我需要做的是类似的事情,但测试我对给定IP地址的出站请求以及特定端口(在本例中为1775)是否成功.应该最好从命令提示符执行测试.
我想监视运行Tor实例的状态.
我已经能够通过TCP连接获取信息到控制端口.例如,"GETINFO stream-status"返回数据,但我无法确定当前所选退出节点的IP地址.
可以简单地请求像whatismyip.org这样的东西,但这太慢了,并且不能很好地扩展.
那么获得Tor连接的出口节点IP地址的最佳方法是什么?
如果您有一组计算机的IP地址(在LAN中),可以从中推断出哪些其他信息?例如,有没有办法找出每个IP背后的计算机运行的操作系统?
我需要找到运行我的软件的手机的IP地址.我本以为这是直截了当的但是在论坛上搜索似乎(令人难以置信的是)在Windows Phone 7中没有这种方法 - 但是,这在Windows Phone 8中有所改变吗?任何帮助,将不胜感激.
我需要将访问者的IP地址存储到我们的数据库中,这是我尝试这样做的方式:
@ip = request.remote_ip
@ip = request.env['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下,即使我将应用程序部署到Amazon EC2实例,该@ip变量也存储了值127.0.0.1.
当我检查http://www.whatismyip.com/,它表明我的IP为109.175.XXX.X.
那么,为什么ruby变量总是显示127.0.0.1地址?我如何获得真正的IP?
编辑: 这是以下输出:
request.env['HTTP_X_FORWARDED_FOR'] =>
request.remote_ip => 127.0.0.1
request.env['REMOTE_ADDR'] => 127.0.0.1
request.ip => 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
我认为问题就在我身边,但我发送了3个朋友的链接,所有人都看到了相同的IP,只有127.0.0.1.
我整天都在解决这个问题但仍然没有成功.
谢谢
我是一位经验丰富的Java开发人员,负责收集Node.js并转向异步模型.除了伐木以外,大多数事情都很顺利.在使用express的Node.js中进行开发时,我在Java中找不到类似于log4j和NDC的任何内容.
我的目标是让每个日志语句自动添加以下信息:
[2013-11-07 11:17:04.615 serverScript INFO 7036 192.168.7.209]
这包括时间戳,编写此语句的js文件的名称(对于模块化节点应用程序),调试级别,进程ID(运行集群)和客户端的IP地址.
我可以在最初进入我的请求处理程序时编写它们,但是如果没有将一堆参数传播到每个被调用的函数,子例程中的记录器语句就没有信息.我知道我可以在每个初始化其名称的js文件中创建我的记录器实例,但我还没有找到客户端IP地址的解决方案.对于运行时间较长的请求,我在记录器中设置的地址会在下一个请求进入时被覆盖,因此记录的IP会被越过.
我看过温斯顿,但即使用它也无法解决这个问题.有没有人完成这个?当您可以按IP过滤以仅查看一个用户的活动时,跟踪字段问题非常有用.
[编辑:从参数传递解决方案测试,直到我学习syslog方式]
[2013-11-07 14:29:28.641 server INFO 7527 192.168.7.209] Got request from 192.168.7.209 for /ionmed/executeQuery?
[2013-11-07 14:29:28.641 router INFO 7527 192.168.7.209] About to route a request for /ionmed/executeQuery, method=POST
[2013-11-07 14:29:28.642 router INFO 7527 192.168.7.209] getting POSTed data
[2013-11-07 14:29:28.642 router INFO 7527 192.168.7.209] POST params: {"sqlQuery":"select sleep(10)","sessionStart":"1383852558799","rand":"0.5510970998368581","jsessionid":"117DBAA89F599D923AF80D4AB171BDDF"}
[2013-11-07 14:29:28.642 requestHandlers INFO 7527 192.168.7.209] 'query' was called.
[2013-11-07 14:29:28.642 requestHandlers INFO 7527 192.168.7.209] select sleep(10)
[2013-11-07 14:29:30.673 server INFO 7527 192.168.7.217] …Run Code Online (Sandbox Code Playgroud) 我最近发现数据包封装在以太网帧中.数据包使用IP地址,帧使用MAC地址.
为什么以太网帧中没有使用IP地址进行路由?据我所知,在尝试访问基本网站时,计算机会转到DNS以查找与用户输入的域名相关的IP地址.计算机如何找到正确的MAC地址?
真的,MAC地址如何用于路由互联网流量?
谢谢
如何从golang的本地接口获取所有地址和掩码?
我需要配置实际的网络掩码以及每个IP地址.
此代码不显示Windows 7中的网络掩码:
package main
import (
"fmt"
"log"
"net"
)
func localAddresses() {
ifaces, err := net.Interfaces()
if err != nil {
log.Print(fmt.Errorf("localAddresses: %v\n", err.Error()))
return
}
for _, i := range ifaces {
addrs, err := i.Addrs()
if err != nil {
log.Print(fmt.Errorf("localAddresses: %v\n", err.Error()))
continue
}
for _, a := range addrs {
log.Printf("%v %v\n", i.Name, a)
}
}
}
func main() {
localAddresses()
}
Run Code Online (Sandbox Code Playgroud)
更新:此问题已在Go中修复:https://github.com/golang/go/issues/5395
ip ×10
ip-address ×2
networking ×2
.net ×1
c# ×1
clock ×1
distributed ×1
exit ×1
go ×1
lan ×1
logging ×1
node.js ×1
parsing ×1
request ×1
ruby ×1
tcp ×1
tor ×1
validation ×1