Socket编程

Scroll Down

Socket编程

应用编程接口API

Socket编程主要是针对应用层和传输层交互,

针对应用进程数据交给传输层,称为应用编程接口 API(Application Programming Interface)

image-20200203144614501

API:就是应用进程的控制权和操作系统的控制权进行转换的一个系统调用接口

Socket API 概述

Socket API

最初是面向TCP/IP协议栈的接口设计的,目前已经是事实上的工业标准,支持绝大多数操作系统,是在Internet网络应用最典型的API接口,是应用进程间通信的抽象机制.

客户端的应用进程要和服务器的应用进程进行通信,双方要创建Socket(套接字),连接在一起即可进行通信,通过IP地址和端口号确认对应的应用进程.

操作系统/进程如何管理套接字(对内)?(一个进程可以产生多个套接字)

需要引入套接字描述符(小整数)
当应用进程创建套接字时,操作系统分配一个数据结构存储该套接字相关信息
返回对应套接字描述符

image-20200203150643259

每个进程在描述表中有一个指针指向对应的socket数据结构

Socket的数据结构:

struct sockaddr_in
{
u_char sin_len; /* 地址长度 */
u_char sin_family; /* 地址族(TCP/IP :AF_INET) */
u_short sin_port; /* 端口号 */
struct in_addr sin_addr; /*IP 地址 */
char sin_zero[8]; /* 未用( 置0) */
}

Socket API函数