网络编程基础

1socket 定义
Linux 中的网络编程是通过 socket 接口来进行的。人们常说的 socket 接口是一种特殊
I/O,它也是一种文件描述符。每一个 socket 都用一个半相关描述{协议,本地地址、本地
端口}来表示;一个完整的套接字则用一个相关描述{协议,本地地址、本地端口、远程地址、
远程端口}socket 也有一个类似于打开文件的函数调用,该函数返回一个整型的 socket 描述
符,随后的连接建立、数据传输等操作都是通过 socket 来实现的。
2socket 类型
常见的 socket 3 种类型如下。
1)流式 socketSOCK_STREAM
流式套接字提供可靠的、面向连接的通信流;它使用 TCP 协议,从而保证了数据传输的
正确性和顺序性。
2)数据报 socketSOCK_DGRAM
数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,
并且不保证是可靠、无差错的。它使用数据报协议 UDP
3)原始 socket
原始套接字允许对底层协议如 IP ICMP 进行直接访问,它功能强大但使用较为不便,
主要用于一些协议的开发。

 

主要函数:

 

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


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

 

· connect:该函数在 TCP 中是用于 bind 的之后的 client 端,用于与服务器端建立连接,
而在 UDP 中由于没有了 bind 函数,因此用 connect 有点类似 bind 函数的作用。


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


· sendto recvfrom:这两个函数的作用与 send recv 函数类型,也可以用在 TCP
UDP 中。当用在 TCP 时,后面的几个与地址有关参数不起作用,函数作用等同于 send recv
当用在 UDP 时,可以用在之前没有使用 connect 的情况时,这两个函数可以自动寻找制定地
址并进行连接 。

posted @ 2018-09-29 14:29  凉初捕影  阅读(151)  评论(0编辑  收藏  举报