Socket实现TCP编程

来源:互联网 发布:单片机LED接线 编辑:程序博客网 时间:2024/04/19 06:01

Socket简介

Socket通信

TCP协议是面向连接的、可靠的、有序的、面向字节流的方式发送数据
基于TCP协议实现网络通信的类

  • 客户端的Socket类
  • 服务器端的ServerSocket类

Socket通信模型

这里写图片描述

Socket通信实现步骤

  1. 创建ServerSocket和Socket
  2. 打开连接到Socket的输入/输出流
  3. 按照协议对Socket进行读/写操作
  4. 关闭输入输出流、关闭Socket

服务器端

  1. 创建ServerSocket对象,绑定监听端口
  2. 通过accept()方法监听客户端请求
  3. 连接建立后,通过输入流读取客户端发送的请求信息
  4. 通过输出流向客户端发送响应信息
  5. 关闭相关资源
public class Server{    public static void main(String[] args){        try{            //1.创建一个ServerSocket,指定绑定的端口,并监听此端口            ServerSocket ss = new ServerSocket(8888);            //2.调用accept()开始监听,等待客户端连接            Socket socket = ss.accept();            //3.获取输入流,读取客户端信息            InputStream is = socket.getInputStream();            //4.提升性能,放入字符流中            InputStreamReader isr = new InputStreamReader(is);            BufferedReader br = new BufferedReader(isr);            String info = null;            while((info=br.readLine()) != null){                System.out.println("我是服务器,客户端说:"+info);            }            //5.关闭相关资源             socket.shutdownInput();            br.close();            isr.close();            is.close();            socket.close();            ss.close();        }    }}

客户端

  1. 创建Socket对象,指明需要连接的服务器地址和端口号
  2. 建立连接后,用输出流向服务器发送请求信息
  3. 通过输入流读入服务器的响应信息
  4. 关闭相关资源
public class Client{    public static void main(String[] args){        //1.创建Socket,指定地址和端口        Socket socket = new Socket("127.0.0.1",8888);        //2.获取输出流,向服务器发送信息        OutputStream os = socket.getOutputStream();        //将输出流包装为字符流        PrintWriter pw = new PrintWriter(os);        pw.write("用户名:123;密码:abc");        pw.flush();        //关闭输出流        socket.shutdownOutput();        pw.close();        os.close();        socket.close();    }catch(UnknowHostException e){        e.printStackTrace();    }catch(IOException e){        e.printStackTrace();    }}

先启动服务器,再启动客户端

0 0