第7课 网络编程

7.1 tcp

Tcp是一种面向链接的、可靠的、基于IP的传输层协议,不管哪一方发送数据,都须要先创建链接,链接是经过三次握手来进行初始化的,linux

第一次握手,客户端发送链接请求,等待服务器确认。编程

第二次握手,服务器收到请求,向客户端发送确认,同时,向客户端发送数据传输请求信息。服务器

第三次握手,客户端收到链接确认信息,并向服务器发送数据接收确认。网络

完成三次握手之后,开始数据的传输。socket

首先,经过socket函数建立socket套接字,而后经过bind函数绑定一个端口号,用listen函数监听这个端口号,是否客户端发送链接请求信息,一旦有链接请求,经过accept函数来接收相应的请求,并创建链接。最后就能够经过send或者recv函数发送或接收信息。固然在客户端一样要创建socket套接字,而后经过connect函数向服务器监听的端口发送链接请求,若是链接成功了之后,服务器端和客户端就能够进行数据传递了。tcp

有两个.c文件,tcp_server.c和tcp_client.c。首先在linux系统里调试一下,将这两个文件放入同一个目录下,分别编译一下,命令:sudo gcc -o tcp_server tcp_server.c和sudo gcc -o tcp_client tcp_client.c函数

而后经过./tcp_server运行服务器端,再开一个terminal,转入到同一个目录下,经过./tcp_client 192.168.0.222 运行客户端。从服务器端就能够看到“ok:server has got connect from 192.168.0.222“表示链接成功。咱们在服务器端输入“hello world”,客户端能够收到字符的个数,同时收到相应的数据为“helloworld”,此时空格键自动被忽略了。学习

服务器端:spa

 

客户端:3d

 

接下来,咱们将客服端程序下载到开发板,此时须要像第一个程序“”Hello,uClinux“程序同样作一样的事,我直接删除了以前的hello程序,将客户端的程序写进同一个目录scu文件夹里,并修改相应的Makefile文件,以下

EXEC = tcp_client

OBJS = tcp_client.o

all: $(EXEC)

$(EXEC): $(OBJS)

       $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

romfs:

       $(ROMFSINST) /bin/$(EXEC)

clean:

       -rm -f $(EXEC) *.elf *.gdb *.o

完成之后回到目录uClinux-dist目录下执行sudo make,而后下载到开发板。下载完成后,在linux端运行服务器程序./server,

 

而且在开发板上运行客户端程序./tcp_client 192.168.0.222,能够看到链接成功。

 

 

在服务器端发送“hello,world”,在开发板上就会收到相应的数据。

 

7.2 udp

Udp和tcp有点不一样,udp不须要通过三次握手,将数据发送过去不须要对方回应,就像发短信同样,短信发送过去就好了,不须要去了解对方收没收到。

有两个.c文件,udp_server.c和udp_client.c。首先在linux系统里调试一下,将这两个文件放入同一个目录下,分别编译一下,命令:sudo gcc -o udp_server udp_server.c和sudo gcc -o udp_client udp_client.c。

以下图所示:

 

一样,须要在开发板里验证一下,此次将开发板做为服务器,将电脑linux端做为客户端,验证结果以下:

 

7.3 在线升级

咱们以前的文件系统和内核镜像文件都是经过网线来下载,无法进行在线升级,接下来经过tftp进行在线升级,

首先在uClinux-dist目录下,执行sudo make xconfig进行相应的配置,选择user setting->Network Applications 选择tftp而且保存退出,

 

而后执行sudo make,完了之后下载到开发板,命令以下图所示:

 

 

 

下载内核和镜像命令不在像以前那样了,在主机上直接下载。可是,烧录在哪里命令仍是没有变。之后烧录程序,就不用再拔电重启了。。。

7.4 总结

这一节课讲了网络编程,虽然很少,可是每个学习嵌入式的同窗都是必需要掌握的,可见其重要性,内容很少,但须要花时间去理解,虽然不难,可是也不简单,只有慢慢来,才能理解的透彻。

相关文章
相关标签/搜索