02. socket编程
<h1>1. socket编程</h1>
<p>Socket是BSD UNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。Socket可以理解为TCP/IP网络的API,它定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。电脑上运行的应用程序通常通过”套接字”向网络发出请求或者应答网络请求。</p>
<h3>1.1.1. socket图解</h3>
<p>Socket是应用层与TCP/IP协议族通信的中间软件抽象层。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket后面,对用户来说只需要调用Socket规定的相关函数,让Socket去组织符合指定的协议数据然后进行通信。</p>
<p><img src="https://www.topgoer.com/static/6.1/3.png" alt="socket图解" title="socket图解" /></p>
<ul>
<li>Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求</li>
<li>常用的Socket类型有两种:流式Socket和数据报式Socket,流式是一种面向连接的Socket,针对于面向连接的TCP服务应用,数据报式Socket是一种无连接的Socket,针对于无连接的UDP服务应用</li>
<li>TCP:比较靠谱,面向连接,比较慢</li>
<li>UDP:不是太靠谱,比较快</li>
</ul>
<p>举个例子:TCP就像货到付款的快递,送到家还必须见到你人才算一整套流程。UDP就像某快递快递柜一扔就走管你收到收不到,一般直播用UDP。</p>