测试平台是PC上的ubuntu8.04利用无线网卡(Asus WL-167g) 与装有fc9(虚拟机)的笔记本(自带无线网卡)测试通信。
昨天,编译好了无线网卡的驱动,本来打算在另一台虚拟机上再编译一个内核树的,但是,没成功,可能跟在虚拟机里的有关,曾经提示说时间不对。想着另一台是笔记本,跟我的无线网卡可以通用一个无线网络,就算是局域网了,IP地址是同一个网段的,直接用IP地址通信的,于是就算了,不再编译内核。
今天开始写例程,从网上找的编译不过,发现自己的ubuntu居然是没有编译环境的,那些个头文件阿什么的全部找不到。试着搭建,居然还是问题很多,下载不了,罢了,直接用别人写过的东西,是可以用的。
虽然拿到的可执行文件是正确的,但是在测试中还是发现了点问题。
刚开始时,我自己的PC这边作为客户端,另一台的虚拟机作为服务端。是同一个网段的,但是就是不行(每次都是在connect()时出错)。(当时也没想过换个方向试试,就傻傻的认为是不行的)后来在我与另一个同学之间测试,(两边都不是虚拟机)测试成功了,此时发现原来我自己的FC9与UBUNTU系统的IP地址不一样(其实对整个测试没什么影响^_^)。到此才证实,让我相信程序是没问题的。于是,又回到ubuntu中。
就在此时,突然一下灵感,是不是可以我这作为服务端,虚拟机作为客户端呢?于是,我又想:虚拟机的IP地址跟他的主机的IP地址是否一样呢?
赶紧去验证,发现主机的IP跟虚拟机的IP地址还真是不一样。终于发现自己为什么开始一直无法成功了。
从虚拟机的#ifconfig 结果来看,虚拟机上的网络设备并不是无线网卡,虽然是在笔记本上的,(笔记本是通过无线网络工作的)。再比对主机跟虚拟机的IP地址,是同一个网段,但是IP地址是不同的。路由器只向外提供了2个IP地址(只有两个人在用),但是此时我却跟貌似是第三个的同网段地址通信,当然不会成功(因为我测试时搜索的就是那个第三个IP地址)。但是如果我的PC作为服务端,虚拟机作为客户端,当他向我请求连接(connect())时,是可以成功的。虚拟机的网卡是根据实际的物理网卡虚拟出来的,要发送接收数据也是通过物理网卡的。对外,也就是相对整个路由器所在组建的局域网来说,虚拟机是不存在的,虚拟机的IP也是不存在的。当我作为服务端时,我所通信的对象(客户端)的IP地址居然是虚拟机的IP(从测试的结果看出来的)。
但是,为什么我向虚拟机连接时不通呢?难道是我测试时弄错了?
以下是自我安慰的设想,如果我要向虚拟机请求链接,那么路由器是不认我所要求的IP的,所以就不通了(此处有点遗憾,没有做我作为客户端向笔记本请求的测试)。
根据“桥接”(所用虚拟机的网络访问方式),虚拟机跟主机处于同一IP网段,但是桥接是连接两个局域网的。
最后的结论就是PC作服务端,可行;虚拟机作服务端,不可行。
以下是客户端(虚拟机的信息):
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:05:35:33
inet addr:192.168.1.113 Bcast:255.255.255.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe05:3533/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6037 errors:0 dropped:0 overruns:0 frame:0
TX packets:6186 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6676379 (6.3 MiB) TX bytes:653965 (638.6 KiB)
Interrupt:18 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1514 errors:0 dropped:0 overruns:0 frame:0
TX packets:1514 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:79128 (77.2 KiB) TX bytes:79128 (77.2 KiB)
[root@localhost ~]# cd /zyk/
[root@localhost zyk]# ls
client client.c client.c~ server server.c test
[root@localhost zyk]# ./client
parameter
[root@localhost zyk]# ./client 192.168.1.114
serverIP:192.168.1.114
hello,world
以下是服务端的一些信息:
zlm8715@zlm8715-desktop:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:19:db:62:71:20
inet addr:192.168.67.45 Bcast:192.168.67.255 Mask:255.255.255.0
inet6 addr: fe80::219:dbff:fe62:7120/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:1016 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:96241 (93.9 KB) TX bytes:7831 (7.6 KB)
Interrupt:220 Base address:0xa000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1887 errors:0 dropped:0 overruns:0 frame:0
TX packets:1887 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:94412 (92.1 KB) TX bytes:94412 (92.1 KB)
rausb0 Link encap:Ethernet HWaddr 00:23:54:71:ca:38
inet addr:192.168.1.114 Bcast:255.255.255.255 Mask:255.255.255.0
inet6 addr: fe80::223:54ff:fe71:ca38/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1111 errors:0 dropped:0 overruns:0 frame:0
TX packets:96 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:127819 (124.8 KB) TX bytes:9782 (9.5 KB)
zlm8715@zlm8715-desktop:~/network_p/rqh/2$ ./server
connect from 192.168.1.113
##服务端的显示的连接请求是从192.168.1.113发出的
阅读(790) | 评论(0) | 转发(0) |