网络编程其实就是基于编写能够使得两台连接网络的计算机之间进行数据交互的程序。
下面通过一个图示简单介绍一下著名的网络编程 OSI 七层模型,从中能够直观理解我们在网络编程时所处的交互层次,从而对具体应该做的数据处理有一定理解。
从上图中的模型能够看到,传输层、会话层、表示层、应用层这几部分都应该算是网络编程的主要部分,而其中最基础的也就是处于传输层的 TCP、UDP 协议实现。不论是 TCP 还是 UDP 协议在操作系统中实现都需要借助 socket 套接字作为软件接口来进行操作实现。
在 Linux 操作系统下,socket 套接字有一系列相关的系统 API 函数,这里分别简单介绍一下,在后面的网络编程应用中,这些都是最基本的操作接口,借助这些操作接口我们能够在操作系统上实现网络程序的数据传输和应用。
#include <sys/socket.h>
//成功返回文件描述符,失败返回-1
int socket(int domain, int type, int protocol);
socket()
函数的调用会生成套接字,并返回套接字的文件描述符,后面经过一系列操作最终实现 socket 套接字的成功连接后,就可以像实现本地文件 I/O 操作一样进行网络数据的写入和读取了。