网络编程和套接字


  • 网络编程其实和我们计算机上的文件读取操作很类似,通俗地讲,网络编程就是编写程序使两台联网的计算机相互交换数据。那么,数据具体怎么传输呢?其实操作系统会提供名为“套接字”的部件,套接字就是网络数据传输用的软件设备而已。即使你对网络数据传输原理不太熟悉,你也可以通过套接字完成数据传输。因此,网络编程常常又称为套接字编程。

  • 下面我们再通过一个通俗地例子来理解什么是套接字并给出创建它的过程。实际上,这个过程类似我们的电话机系统,电话机通过固定电话网完成语言数据的交换。这里的电话机就类似我们的套接字,电网就类似我们的互联网。和电话可以拨打或接听一样,套接字也可以发送或接收。先来看看接收的套接字创建过程:
    1,打电话首先需要准备什么?当然得是要先有一台电话机。创建相当于电话机的套接字,如下:

    int socket(int domain, int type, int protocol);

    2,准备好电话机后要考虑分配电话号码的问题,这样别人才能联系到你。套接字也一样,利用下面函数创建好套接字分配地址信息(IP地址和端口号)。

    int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);

    3,做了上面两步后,接下来就是需要连接电话线并等待来电。一连接电话线,电话机就转为了可接听状态,这时其他人可以拨打电话请求连接到该机了。同样,需要把套接字转化成可接收连接的状态。

    int listen(int sockfd, int backlog);

    4,前面都做好后,如果有人拨打电话就会响铃,拿起话筒才能接听电话。套接字同样如此,如果有人为了完成数据传输而请求连接,就需要调用下面函数进行受理。

    int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

  • 总结下网络中接收连接请求的套接字创建过程如下:
    第一步:调用socket函数创建套接字。
    第二步:调用bind函数分配IP地址和端口号。
    第三部:调用listen函数转为可接收请求状态。
    第四步:调用accept函数受理连接请求。

  • 上面讲的都是接电话,即服务端套接字(接收),下面我们再来讲讲打电话,即客服端套接字(发送)。这个要简单,只有两步:1,调用socket函数创建套接字。2,调用connect函数向服务端发送连接请求。

    int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen);

你可能感兴趣的:(linux)