一、什么是Socket?
我们写的应用程序是通过Socket向网络发出请求的,或者你向我发出请求,我通过Socket向你发出响应。
数据库其实是一种服务,他可以存储不同的数据。mySql、SQLserver、Oracle是三种常用的数据库,每种数据库对应一个Socket。每一个Socket会跟一个端口去绑定。
端口:物理意义:比如交换机、路由器上面的端口。逻辑意义:计算机上一些整型数字来表示端口,每个端口都有端口号,每个端口对应不 同的服务。我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来 实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的。
在一个计算机上面,可以提供多种服务,每一个服务都可以提供一个Socket,和一个端口去绑定。
那么什么是Socket:网络上两台计算机进行通信,那么你和我进行通信,咱俩发送请求和接收,那咱俩两个计算机进行双向通信的端点就是Socket。他的目的是来实现数据的交换。而这个Socket会和一个端口来绑定,绑定之后会对应一个服务。
二、Socket分类

流式套接字:我发给你的数据你一定会无差错的、无重复的全接受到,不可能导致数据的丢失,而且我传送的顺序和你接收的顺序时一致的。基于TCP协议数据报套接字:你接的顺序和我发的顺序不一定一致,并且数据也可能丢失。基于UDP协议。
三、Socket通信原理
比如你要访问我的电脑,你首先要知道我电脑的ip,不然你访问谁去?而且,我这个计算机上这么多的服务,你访问哪个服务?所以需要一个端口号,因为一个服务是和一个端口绑定的。你告诉我一个ip和一个端口号,此时你就可以向我发送这个服务的请求了。我的电脑有一个监听器来监听你的请求同时,如果我是空闲的,那我就可以接受这个请求了。我接受请求之后会给你一个回应,此时就可以通信了。通信的方式就是输入输出流。我的输出对应你的输入,你的输出对应我的输入。结束之后,也要关闭Socket。
四、基于TCP协议的Socket编程
一、Socket类
Socket对象在客户端和服务器端之间建立连接。可用Socket类的构造方法创建套接字,并将此套接字连接至指定的主机和端口。
构造方法:
1、第一种构造方法以主机名和端口号作为参数来创建一个Socket对象。
2、第二种构造方法以InetAddress对象和端口号作为参数来创建一个Socket对象。
二、SeverSocket类
构造方法:
1、第一种接受端口号作为参数创建SeverSocket对象。
2、第二种接受端口号和最大队列长度作为参数,队列长度表示系统在拒绝连接前可以拥有的最大客户端连接数。