说说Tcp断开连接时的Time_Wait状态

前段时间码代码,关于网络编程的,分为了服务器和客户端。因为要验证业务逻辑的正确性,所以需边改边测,时不时也会重启下服务器或客户端。那正巧有一次,当我改好了服务器的代码然后重启的时候,程序给报异常了,说端口怎么怎么样了,我心想没有其他程序占用这个端口吧,然后马上再重启了一次还是不行。因为当时急着要解决其他的问题,所以只好暂时把服务器监听的端口给改了,接着程序给运行起来了,过了好一会儿,解决验证了其他问题后,我决定再来看看刚刚端口占用的问题,于是把服务器端口给改了回来,运行,咦?可以了。这是怎么回事,当时我百思不得其解~

Read More

node.js获取本机IP地址

在node.js里面获取本机IP很简单,在OS模块里面,直接调用networkInterfaces(),就可以列出你机子的所有网络接口的信息,它返回的是一个数组,如官网列出的信息:

1
2
3
4
5
6
7
8
9
10
11
{ lo0: 
[ { address: '::1', family: 'IPv6', internal: true },
{ address: 'fe80::1', family: 'IPv6', internal: true },
{ address: '127.0.0.1', family: 'IPv4', internal: true } ],
en1:
[ { address: 'fe80::cabc:c8ff:feef:f996', family: 'IPv6',
internal: false },
{ address: '10.0.1.123', family: 'IPv4', internal: false } ],
vmnet1: [ { address: '10.99.99.254', family: 'IPv4', internal: false } ],
vmnet8: [ { address: '10.88.88.1', family: 'IPv4', internal: false } ],
ppp0: [ { address: '10.2.0.231', family: 'IPv4', internal: false } ] }

据此,我们可以根据实际需要取到相应的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

function getIPAdress(){

var interfaces = require('os').networkInterfaces();

for(var devName in interfaces){

var iface = interfaces[devName];
for(var i=0;i<iface.length;i++){
var alias = iface[i];
if(alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal){
return alias.address;
}
}
}
}

Read More

解决clone过后的虚拟机网卡上网相关问题

当我把现有的centos虚拟机文件复制或clone一份后,然后再运行复制后的.vmdk文件,会发现系统加载的时候会提示相关错误信息,大致就是网卡不能启动,

Bringing up interface eth0: Device eth0 has different MAC address than expected,ignoring.

究其原因就在于虚拟机镜像拷贝的问题,因为复制.vmdk文件是将虚拟机完全copy了一份(包括MAC地址),由于新的硬件平台网卡MAC与系统中网卡MAC不一致,因此就会有上述的结果显示。这时候你在系统里面ifconfig是得不到当前主机IP地址的信息。

Read More

理解js中的原型继承

为了搞清在js中如何实现继承,也是对之前这篇博文js中prototype用法的补充,我主要参考了下面两篇文章:

伯乐在线的JavaScript原型和继承

阮一峰的构造函数的继承

我是两篇对比着看的,刚开始看的时候脑袋都快被绕晕了,或许是自己对于js的高级特性不熟悉,亦或是js本身语言的强大灵活性与传统的编译性语言区别太大的原因导致,所以此次的学习笔记决定‘从简’,为了不搞混淆,只把我觉得易懂的部分给抽出来,方便以后查阅。

Read More