1.socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。
2.通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
3.我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。
客户端
public class MyClient { public static final String SERVER_LOCALHOST="127.0.0.1"; //服务端的IP public static final int SERVER_PORT=8080; //服务端的端口 public static void main(String[] args) throws Exception { //创建客户端的Socket对象,并且指定服务端的IP以及端口 Socket socket=new Socket(SERVER_LOCALHOST,SERVER_PORT); //获取Socket输出流 OutputStream os=socket.getOutputStream(); //准备一句话 String say="hello"; //将字节流转换为字符流 OutputStreamWriter osw=new OutputStreamWriter(os); //将字符流转换为字符缓冲流 BufferedWriter bw=new BufferedWriter(osw); bw.write(say); bw.flush(); //禁用Socket中的输出流 socket.shutdownOutput(); //获取Socket输入流 InputStream is=socket.getInputStream(); //将字节流转换为字符流 InputStreamReader isr=new InputStreamReader(is); //将字符流转换为字符缓冲流 BufferedReader br=new BufferedReader(isr); //读出 String clientContent=br.readLine(); System.out.println(clientContent); br.close(); bw.close(); socket.close(); } }
服务端
public class MyServer { //服务端的端口 public static final int SERVER_PORT=8080; public static void main(String[] args) throws Exception { //创建服务端Socket对象 ServerSocket serverSocket=new ServerSocket(SERVER_PORT); //监听来自客户端的请求 Socket socket=serverSocket.accept(); //获取Socket输入流 InputStream is=socket.getInputStream(); //将字节流转换为字符流 InputStreamReader isr=new InputStreamReader(is); //将字符流转换为字符缓冲流 BufferedReader br=new BufferedReader(isr); //读出 String clientContent=br.readLine(); System.out.println(clientContent); //禁用Socket中的输入流 socket.shutdownInput(); //回复 String responseSay="hellohello"; OutputStream os=socket.getOutputStream(); //将字节流转换为字符流 OutputStreamWriter osw=new OutputStreamWriter(os); //将字符流转换为字符缓冲流 BufferedWriter bw=new BufferedWriter(osw); //写入 bw.write(responseSay); bw.flush(); bw.close(); br.close(); socket.close(); serverSocket.close(); } }