CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

系统中有多个网卡。怎么知道winsock收到的数据是从哪张网卡收到的。

楼主cow_boys(小耳朵)2005-06-04 17:33:17 在 VB / 基础类 提问

系统中有多个网卡。怎么知道winsock收到的数据是从哪张网卡收到的。  
  以便回复数据,从原来的网卡发出。 问题点数:0、回复次数:15Top

1 楼SupermanKing(人类)回复于 2005-06-04 20:30:35 得分 0

你的概念上有问题,只能是通过IP来处理,不能说哪一块网卡。即使是MAC地址也可捆绑,  
  当然IP也一样,如果捆绑了网卡,你还可以单独使用一块网卡发数据不就很矛盾吗?所以  
  单独使用一块网卡的概念是有问题的,而是要理解成IP或是其他的什么地址。如果你想知  
  道哪一块网卡收到数据,可以这样看,比如你的一个UDP服务,当收到数据是必定可以读出  
  远程和本地的IP地址,然后可以根据本地的IP地址取得MAC地址,然后在用WMI或API枚举系  
  统中的网卡,当判断到网卡MAC地址与你获得数据的MAC地址相同的时候就可以将网卡名称  
  提出来,说明这一块网卡收到了数据。至于发送数据根本就直接把本地IP重新设置一次你  
  收到数据时的本地IP地址,然后再设置一次远程IP地址,发送就完了。Top

2 楼xiaoHitler()回复于 2005-06-04 21:07:49 得分 0

upTop

3 楼cow_boys(小耳朵)回复于 2005-06-06 01:52:51 得分 0

我在  
  Winsock1_DataArrival  
  事件中读  
  msgbox   winsock1.LocalIP    
  不正确。  
  读到的IP是我另一张网卡的(不同网段)  
  Top

4 楼kkmnv(风来了,我走了)回复于 2005-06-06 09:15:03 得分 0

winsock控件可以判断,不同的网卡的信息,好像要用bind方法来帮定到相应的网卡,  
  我给你在查一下Top

5 楼wumylove1234(毁于随)回复于 2005-06-06 09:17:59 得分 0

怀疑是不是和远程服务器地址有关呢?  
   
  关注.Top

6 楼cow_boys(小耳朵)回复于 2005-06-06 15:04:03 得分 0

我主要的用途是UDP的通信,不同网卡(IP)回复不一样的数据。Top

7 楼cow_boys(小耳朵)回复于 2005-06-06 19:32:56 得分 0

up   一下。  
  Top

8 楼shumjj(一个人)回复于 2005-06-09 15:40:38 得分 0

我想楼主有个误区,你的问题是没有定义好通讯协议。你接受]的数据应该有个协议类型,然后根据这个协议类型来回复而不应该根据ip来回复,当然你可以取得远程的ip,但是建议在协议上做个修改。Top

9 楼mumujwang(木木)回复于 2005-06-09 17:06:21 得分 0

上面的有道理啊,找MAC地址啊,API可以做啊1Top

10 楼cow_boys(小耳朵)回复于 2005-06-10 15:04:33 得分 0

up   一下.Top

11 楼SupermanKing(人类)回复于 2005-06-11 02:57:36 得分 0

当winsock建立服务时,winsock所侦听的是所有本机在同一端口中能侦听到的IP信息,  
  也就是说,如果你有3块网卡,一个IP是:192.168.1.33,一个是:192.188.100.199,还  
  还有一个是:137.177.5.66,在这种情况下,决定使用通讯设备的并不是服务端,而是客  
  户端。比如客户端将RemoteHost设置为:192.188.100.199,那么你服务端读到的LocalIP  
  将是:192.188.100.199,如果客户端的RemoteHost设置为:137.177.5.66,服务端读到  
  的LocalIP也就会是:137.177.5.66,所以用winsock控件侦听IP的决定权并不是在服务端。  
  而是在客户端。如果你想做成像IIS一样可以单独侦听某个IP的某个端口,只能靠API了,  
  用winsock在服务端想控制侦听的IP是不行的。Top

12 楼wumylove1234(毁于随)回复于 2005-06-11 09:57:55 得分 0

哦.我没有测试,难道我的假想是正确的?  
  Top

13 楼yassee(甲克虫 - 花开堪折直须折,莫待无花空折枝.)回复于 2005-06-11 16:59:09 得分 0

实在不行,在客户端选择RemoteHost设置时,连通后,把RemoteHost设置的ip发给服务器端,服务器就能区别那个网卡收到数据了。Top

14 楼cow_boys(小耳朵)回复于 2005-06-13 01:08:05 得分 0

to     SupermanKing(人类)   大侠  
   
  你有没有测试过啊,你说的,我早就测过了。但读出的IP是本地连接的。本地连接2,永远读不到。Top

15 楼SupermanKing(人类)回复于 2005-06-14 01:03:04 得分 0

我说了,控制权在客户端,如果你客户端把RemoteHost设置为你本地连接2的IP呢,  
  我虚拟了2块网卡,加一个真正的网卡,都没问题。可能你写的不是IP,而是计算  
  机名吧。Top

相关问题

  • 请问为什么我的socket能接收到两块网卡的数据??急
  • vc--网卡数据?
  • 在多网卡的机器上,如何在WINSOCK应用程序中使数据包从自己指定的网卡上发出?
  • 捕获网卡的数据包
  • 为什么winsock控件没有接收到数据?(在线等待)
  • 如何知道截获网卡上数据的数据包?我想探测无线网卡是否有信号。
  • 网卡出现收到0包的现象 急啊!!!!!
  • 怎么在winsock API通讯中接收到数据包的同时获得发送者的IP地址信息
  • VB 中的winsock控件用udp协议有crc校验,会把收到的错误数据丢弃吗?
  • winsock控件用udp协议有crc校验,会把收到的错误数据丢弃吗?

关键词

  • ip
  • 数据
  • winsock
  • 客户
  • 远程
  • 系统
  • 协议
  • 服务器
  • mac
  • 连接

得分解答快速导航

  • 帖主:cow_boys

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo