搜索
查看: 2065|回复: 34
打印 上一主题 下一主题

网络数据传输问题

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-24 19:50:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
10啊哈币
最近正学习wxSocket的网络传输问题,我编写了一个可以用Socket发送信息到另一台计算机的程序,

问题是这个东西只能在连接到我家的Wifi的电脑之间传输数据,

感觉可能不是代码的问题,而是IP配置的问题(我用虚拟机做Server),
求大神讲解

沙发
 楼主| 发表于 2014-10-24 19:54:48 | 只看该作者
ifconfig(主机):
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
        nd6 options=1<PERFORMNUD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether b8:e8:56:41:95:f0
        inet6 fe80::bae8:56ff:fe41:95f0%en0 prefixlen 64 scopeid 0x4
        inet 192.168.1.7 netmask 0xffffff00 broadcast 192.168.1.255
        nd6 options=1<PERFORMNUD>
        media: autoselect
        status: active
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=60<TSO4,TSO6>
        ether 72:00:01:52:19:60
        media: autoselect <full-duplex>
        status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=60<TSO4,TSO6>
        ether 72:00:01:52:19:61
media: autoselect <full-duplex>
        status: inactive
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
        ether 0a:e8:56:41:95:f0
        media: autoselect
        status: inactive
awdl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1452
        ether 16:d5:d6:21:fc:c4
        inet6 fe80::14d5:d6ff:fe21:fcc4%awdl0 prefixlen 64 scopeid 0x8
        nd6 options=1<PERFORMNUD>
        media: autoselect
        status: active
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=63<RXCSUM,TXCSUM,TSO4,TSO6>
        ether ba:e8:56:14:a9:00
        Configuration:
                id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
                maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
                root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
                ipfilter disabled flags 0x2
        member: en1 flags=3<LEARNING,DISCOVER>
                ifmaxaddr 0 port 5 priority 0 path cost 0
        member: en2 flags=3<LEARNING,DISCOVER>
                ifmaxaddr 0 port 6 priority 0 path cost 0
        nd6 options=1<PERFORMNUD>
        media: <unknown type>
        status: inactive
ham0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1404
        ether 7a:79:19:5f:61:ba
        inet 25.95.97.186 netmask 0xff000000 broadcast 25.255.255.255
        inet6 fe80::7879:19ff:fe5f:61ba%ham0 prefixlen 64 scopeid 0xa
        inet6 2620:9b::195f:61ba prefixlen 96
        nd6 options=1<PERFORMNUD>
        open (pid 48)
vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 00:50:56:c0:00:01
        inet 172.16.200.1 netmask 0xffffff00 broadcast 172.16.200.255
vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 00:50:56:c0:00:08

        inet 192.168.97.1 netmask 0xffffff00 broadcast 192.168.97.255

板凳
 楼主| 发表于 2014-10-24 19:55:50 | 只看该作者
ifconfig(虚拟机):
eth0      Link encap:以太网  硬件地址 00:0c:29:d5:4c:99  
          inet 地址:192.168.1.12  广播:192.168.1.255  掩码:255.255.255.0
          inet6 地址: fe80::20c:29ff:fed5:4c99/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:5521 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:1065 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:625952 (625.9 KB)  发送字节:91789 (91.7 KB)

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:930 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:930 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0
          接收字节:93572 (93.5 KB)  发送字节:93572 (93.5 KB)
地板
发表于 2014-10-24 20:04:50 | 只看该作者
问题是这个东西只能在连接到我家的Wifi的电脑之间传输数据,

你想和哪台主机传输数据?那台主机上有你实现的clinet或者server吗?
还是说你实现的是公用协议的东西?
5#
 楼主| 发表于 2014-10-24 20:06:08 | 只看该作者
本帖最后由 981013 于 2014-10-24 20:07 编辑
rosynirvana 发表于 2014-10-24 20:04
你想和哪台主机传输数据?那台主机上有你实现的clinet或者server吗?
还是说你实现的是公用协议的东西?

在我自己的虚拟机上有server程序;在试图连接并发送数据到server的电脑上有我实现的client

6#
 楼主| 发表于 2014-10-24 20:08:11 | 只看该作者
rosynirvana 发表于 2014-10-24 20:04
你想和哪台主机传输数据?那台主机上有你实现的clinet或者server吗?
还是说你实现的是公用协议的东西?

在那台主机和server连接到同一WIFI时运行正常
7#
发表于 2014-10-24 20:10:38 | 只看该作者
看起来好复杂阿!     
8#
 楼主| 发表于 2014-10-24 20:12:47 | 只看该作者
发一下源码,注意是基于wxWidgets库的

server.zip

206.51 KB, 下载次数: 1

client.zip

1000.62 KB, 下载次数: 0

9#
发表于 2014-10-24 20:14:30 | 只看该作者
981013 发表于 2014-10-24 19:55
ifconfig(虚拟机):
eth0      Link encap:以太网  硬件地址 00:0c:29:d5:4c:99  
          inet 地址:1 ...

换一个虚拟机试试把           
10#
发表于 2014-10-24 20:17:13 | 只看该作者
981013 发表于 2014-10-24 19:55
ifconfig(虚拟机):
eth0      Link encap:以太网  硬件地址 00:0c:29:d5:4c:99  
          inet 地址:1 ...

还有一个电脑只有一个网卡.电脑占用的虚拟机就无法占用,虚拟占了同理.!

点评

或许你认为你电脑有两个网卡  发表于 2014-10-24 20:17
11#
 楼主| 发表于 2014-10-24 20:19:02 | 只看该作者
超神级 发表于 2014-10-24 20:17
还有一个电脑只有一个网卡.电脑占用的虚拟机就无法占用,虚拟占了同理.!

调成这样也不行?

12#
发表于 2014-10-24 20:20:46 | 只看该作者
w​x​S​o​c​k​e​t​为​跨​平​台​网​络​编​程​提​供​了​另​一​种​实​现​方​法​.​它​屏​蔽​了​各​操​作​系​统​S​o​c​k​e​t​操​作​上​细​微​的​差​异​.​使​得​开​发​人​员​能​专​注​于​编​写​业​务​逻​辑​。​w​x​S​o​c​k​e​t​中​最​重​要​的​类​是​W​X​—​S​o​c​k​e​t​B​a​s​e​,​它​为​使​用​w​x​S​o​c​k​e​t​提​供​了​统​一​的​接​口​。​并​且​形​成​了​w​x​S​o​c​k​e​t​中​各​类​的​使​用​模​式​和​事​件​机​制​。

点评

跨平台的东西!学习了!!  发表于 2014-10-24 20:21
13#
发表于 2014-10-24 20:24:53 | 只看该作者
这和虚拟机的网络设置有关
你找找用的虚拟机的相关的设置文章
14#
发表于 2014-10-24 20:26:43 | 只看该作者
不好意思没仔细看!
15#
发表于 2014-10-24 20:30:24 | 只看该作者
以前写过简单的套接字也是遇到你这样的事情.原因是ip地址不对.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表