socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
对应java sorcker来说,可以用以下图列说明:
我们先来看看Socker官方API怎么说的:socker是两台机器之间的终节点。
http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html
下面我们看一下ServerSocket。
ServierSocket的主要作用是用来监听端口号是否有事件发生,同时返回与请求相关的socket对象。进行通信。以下这段代码,当用浏览器访问127.0.0.1:8888 的时候,控制台会输出
新增连接:/127.0.0.1:65475
新增连接:/127.0.0.1:65476
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ServerSocketDemo { static ServerSocket serverSocket =null; public ServerSocketDemo() throws IOException { } public static void main(String[] args) throws IOException { serverSocket = new ServerSocket(8888); service(); } public static void service() { while (true) { Socket socket = null; try { socket = serverSocket.accept(); System.out.println("新增连接:" + socket.getInetAddress() + ":" + socket.getPort()); } catch (Exception e) { e.printStackTrace(); } } } }