多网卡FTP测试,绑定本地IP地址

一台电脑可以同时有多个网络连接,如果不绑定指定的IP,系统就会按照默认路由表经过默认的网关进行数据的收发;

    拿一个简单的TCP通信程序来说,服务端需要在指定的端口进行监听,所以必须绑定指定的端口,而客户端创建的socket是连接指定的服务端,创建socket后直接调用connect()函数就可以连接到指定的服务端;系统会根据默认的路由和空闲的端口,让数据从指定的网关和端口出去;如果要从指定的网卡进行通信,可以在客户端创建socket后调用bind()绑定指定的IP和端口,然后在调用connet()连接指定的服务端.

    FTP也一样,都是TCP方式的数据传输,如果需要FTP客户端要指定从哪个网络连接进行测试(即指定从哪个网卡收发数据),可以在创建socket是调用bind()函数对本机的IP进行绑定,无论是内网的IP还是公网的IP,只要绑定本机上的IP就行了!

   还有一点很重要,就是调用bind()时绑定的端口要设为零,即让系统自己随机分配端口;FTP客户端连接服务器进行文件的上传和下载,需要和服务器建立两个通道:控制通道和数据通道.控制通道:传输FTP命令;数据通道:进行数据传输;一共有三个socket:负责命令通道的socket;负责数据传输的socket;建立数据通道时负责监听服务器连接的socket;三个socket在创建后都要绑定指定的网卡的IP,才可以从指定的网卡上进行收发数据.

   最后一点就是要设置路由表了.要将各个网卡destination为0.0.0.0的路由的metric值都设为1才行!要不然,绑定了一个网卡的IP,它的路由路径的metric(路由跳转数)不为1,则登录不了服务器;范例:route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1;  192.168.1.1就是绑定网卡的网关;如果两个网卡都时同一个局域网内的就不用再设路由表,因为他们都走同一个网关的!

   修改(2010.06.24):修改路由表的时候,不能直接调用route change命令修改,而是先将需要修改的路由删除(例:route delete 0.0.0.0 mask 0.0.0.0 192.168.1.1 ),然后再添加新的路由(例:route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1);直接修改会出现"创建数据通道失败"的错误!


转载自:http://hi.baidu.com/whandsome/blog/item/30de47f047dc45bda50f52da.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值