计算机网络知识梳理(六)---- SOCKET

56 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

计算机网络知识梳理 这个系列是为了巩固在计算机网络方面的相关理论基础,日常开发虽然用不到,但是真要是有啥问题还得靠平常积累的知识点

是什么

socket 是编写网络应用程序的一种编程工具

网络应用进程通信时需要通过API接口请求底层协议的服务,如传输层服务,目前在Internet 中应用最广泛的网络应用编程接口就是Socket API。

无论是客户进程还.是服务器进程,都需要创建Socket,实现与底层协议接口,从而可以通过Socket将数据发送 出去或接收进来。

应用进程可以根据需要,创建不同类型的Socket, 与不同的底层协议接口,当然也就使用了不同底层协议提供的不同类型的服务

image.png

SOCKET api

int socket(..)

用于创建套接字 返回:成功,返回非负整数,为套接字描述符,失败返回-1

int close(int sockfd)

用户关闭一个描述符为 sockfd 的套接字,也就是socket() 返回的

说明:如果多个进程共享-一个套接字, 调用close(将套接字引用计数减1,减全0才关闭该套接字;一个进程中的多线程对一个套接字的使用不存在计数,如果进程中的某个线程调用close(将--一个套接字关闭,该进程中的其他线程也将不能访问该套接字了。

int bind(..)

功能:绑定套接字的本地端点地址

int listen()

功能:置服务端的流套接字为监听状态

说明:只用于服务器端,且仅用于面向连接的流套接字

int connect(..)

功能:将客户套接字sockfd 与服务器连接。程序调用connect函数来使客户套接字(sd)与特定计算机的特定端口( saddr)的套接字(服务)进行连接

说明:

不仅可以用于TCP客户端也可以用于UDP客户端; 对于TCP客户端,该函数真正建立与服务器的TCP连接,对于UDP客户端,只是指定服务器端点地址。