通俗易懂讲解javaSocket编程

前言

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
    建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,
TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装
或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
    Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。
通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机
或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。
每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
Socket正如其英文原义那样,像一个多孔插座。一台主机犹如布满各种插座的房间,
每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。
 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
    --摘自百度百科

 

Socket编程

一、网络编程基础

HTTP协议是应用层的协议,应用层协议还有FTP文件传输协议等

Socket是传输层的技术,包含了UDP和TCP两种传输方式。

Java中,应用层使用URL和URLConnection完成HTTP协议和Socket流的封装。

1、 两台计算机间通信需要以下三个条件
IP地址、协议、端口号
2、TCP/IP协议
TCP/IP协议是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也可称为TCP/IP协议簇、或者TCP/IP协议栈
TCP:Transmission Control Protocol 传输控制协议
IP:Internet Protocol 互联网协议
3、TCP/IP五层模型
应用层:HTTP、FTP、SMTP、Telnet等
传输层:TCP/IP
网络层:
数据链路层:
物理层:网线、双绞线、网卡等
注:上层依赖于下层
4、Ip地址
为了实现网络中计算机之间的通信,每天计算机都必须有一个唯一的标示——IP地址
5、端口
区分一台主机的多个不同的应用程序,端口号为0-65535,其中0-1023是为系统保留
如:HTTP 80 FTP:21 TELNET:23
IP地址+端口号组成了所谓的socket,socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础
6、Socket套嵌字
网络上具有唯一标示的端口组合在一起的才能构成唯一能识别的标识符套接字。

socket原理机制:

通信的两端都有socket

网络通信其实就是socket间的通信

数据在两个socket间通过IO传输

关于Socket连接,下面是摘自百度百科,概述的比较明确

TCP编程

1、TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数据,通过建立三次连接的方式建立连接,形成传输数据的通道,在连接中进行大量数据的传输,效率会稍低

2、java中基于TCP协议实现网络通信的类

客户端的Socket类

服务器端的ServerSocket类

通俗易懂讲解javaSocket编程_第1张图片

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:
服务器监听,客户端请求,连接确认。
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,
然后就向服务器端套接字提出连接请求。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,
它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,
一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,
继续接收其他客户端套接字的连接请求。

 

你可能感兴趣的:(Java+Java8,New,Features,计算机网络,java,socket,网络,http)