嵌入式网络编程-自学篇

来源:互联网 发布:合同审核 知乎 编辑:程序博客网 时间:2024/05/07 03:50

from : http://www.cnblogs.com/miosec/archive/2013/02/12/2910225.html

<一>

目的:想在路由器里做一个自动判断网络连接类型的功能

方法:学习参考embeddedLinux-10.pdf

涉及知识点:web、c

其他:这个芝麻大的功能居然有人申请专利了…专利号:APN/CN201110196988.X

 

正文:

Socket编程

1.函数说明

进行socket编程的基本函数有socket、bind、listen、accept、send、sendto、recv、recvform这几个,其中对于Client和Server以及TCP、UDP操作流程都是有区别的。我们先对函数进行生命,再给出不同情况下实用的流程图。

socket 该函数用于建立一个socket连接,可指定socket类型等信息。在建立了连接之后,可对sockadd后sockaddr_in进行初始化,以保存所建立的socket信息。

 

connect 该函数用于将本地IP地址绑定端口号,若绑定其他地址则不能成功,另外他主要用于tcp的连接,而在UDP的连接中则无必要。

 

send和recv 这两个函数用于接收和发送数据,用在TCP及UDP皆可。用在UDP时,可以在connect函数建立连接之后再用。

 

sendto和recvfrom 这两个函数的作用与send和recv函数类似,可以用在TCP和UDP中皆可。当用在TCP时,后面的几个地址有关参数不起作用,函数作用等同于send和recv。当用在UDP时,可以用在之前没有使用connect的情况时,这两个函数可以自动寻找指定地址并进行连接。(本博文作者注:如广播地址收发?)

服务器端和客户端使用TCP协议的流程如图如下所示

              image

服务器端和客户端使用UDP协议的流程如图如下所示

image