网络编程实验,服务器/客户端
首先保证ARM9和VMlinux ping 通,才能够进行socket编程通信。
问题解决过程记录:
一初始状态:
主机PC IP:59.64.158.56
Submark:255.255.252.0
默认网关:59.64.156.1
首先DNS:211.68.71.4
但是VMlinux的
IP:192.168.74.129
Mark 255.255.255.0
默认网关:192.168.74.2
ARM9开发板
默认IP:192.168.0.15
Mark 255.255.255.0
此时是初始状态,
我的ARM开发板ping 不通虚拟机和主机,但是主机和虚拟机之间可以互相ping通,为什么?
PC ping VMlinux ok
Vmlinux ping PC ok
其他的都ping不通。问题:
(1)由于IP不在一个网段,所以ping不通,但是why PC和VMlinux能够ping通呢?他们也不在一个网段。
所有的防火墙和杀毒软件关闭,仍旧不行。
(2)刚开始ARM没有连接网线,固然ping不通
二、后来找了开发板中自带的交叉网线,并将IP地址更改如下
PC :192.168.74.127
ARM:ifconfig eth0 192.168.74.126
Linux:192.168.74.129 不变
此时用交叉网线将ARM和PC相连,
PC ping ARM ok
ARM ping PC ok
其他的都ping不通。
所有的防火墙和杀毒软件关闭,仍旧不行。
三、交叉网线换做普通网线连接由路由器和ARM9。本机PC仍旧连接路由器
此时恢复了PC的ip:为了pc能上网
主机PC IP:59.64.158.56
Submark:255.255.252.0
默认网关:59.64.156.1
首先DNS:211.68.71.4
发现pc和VMlinux仍旧能ping通
但是ARM9 和VMlinux在一个网段仍旧ping不通。上网查询,需要将VMware的网络换做桥接模式:
VM->setting->Network Adapter 将NAT换成 Bridged->OK
很惊喜的发现:
ARM9 ping VMlinux OK
VMlinux ping ARM9 OK
此时由于主机PC的ip和上面两个不在一个网段,于是更改为:
PC :192.168.74.127
如下图所示:
此时所有的都能够ping通了
PC的cmd:
VMlinux超级终端:
ARM9 的超级终端:
四、过一段时间后,发现三者互相ping不通了
找了很久原因发现由于VMlinux变为桥接模式
此时的IP地址变化了:
变为了主机之前的网段。所以更改为:
此时三者即可互通。并且socket通信成功。
Socke编程过程:
1 利用SSH将service.c和client.c传输给VMlinux。
2 service 采用本机编译:
#gcc service.c –o service
3 client采用交叉编译:
# /usr/local/arm/3.4.1/bin arm-linux-gcc client.c –o client
4 通过SSH将编译成功的client传送到windows PC
5 用超级终端的发送文件,将PC上的client传输给ARM的tmp文件目录下
6 首先运行service
7 运行client 后面是服务器即 VMlinux的ip地址。运行结果如步骤6的图。
第一次这么开心和坚持下来做实验,坚持就是胜利,胜利就是在想放弃的时候再坚持一下!