Socket相关理解

tech2026-06-13  2

客户端:

1. 数据发送:

//1.连接 Socket sk = new Socket(address,port); //2.连接上之后放到输出流中 OutputStream os = sk.getOutputStream(); // 3.将对象的格式表示打印到文本输出流 PrintWriter pw = new PrintWriter(os); //4.向服务器写入需要发送信息! pw.write("向服务器发送信息!"); //刷新write,不然服务端可能接收不到数据。 pw.flush(); //5.禁用此套接字的输出流。 sk.shutdownOutput();
数据接收
//1.获取从服务器的输出流数据,放到客户端的输入流中。 InputStream ins = sk.getInputStream(); //2.将字节流数据转换成字符流数据放到字符缓冲流中 BufferedReader br = new BufferedReader(new InputStreamReader(ins)); //3.读取服务器发送过来的数据(解析数据) String str = null ; StringBuffer sb = new StringBuffer(); while((str = br.readLine()) !=null){ sb.append(str); }

服务器端

//开启服务 ServerSocket ssocket = new ServerSocket(port); //等待连接的Socket,他在等生成实例,生成了便说明有连接成功了 Socket socket ; while(true){ socket = ssocket.accept(); //每接收到一个客户端连接刚创建一个线程来处理该连接的情况 Thread t = new Thread(new MyRunnable(socket)); t.start(); } 服务器接收数据: Socket socket ; //1.连接上之后获取对方传过来的信息 InputStream ins = socket.getInputStream(); //2.将字节流数据转换成字符流数据放到字符缓冲流中 BufferedReader br = new BufferedReader(new InputStreamReader(ins)); //3.解析数据 StringBuffer info = new StringBuffer(); String linedata = null; //将信息收信进info while((linedata = br.readLine() ) != null){ info.append(linedata); } //将信息按约定的解析 String[] list = info.toString()==null?null:info.toString().split(";"); //4.禁用此套接字的输入流 socket.shutdownInput(); 服务器输出数据 //1.将结果返回给客户端 OutputStream os = socket.getOutputStream(); // 2.将对象的格式表示打印到文本输出流 PrintWriter pw = new PrintWriter(os); //3.向客户端发送数据 pw.write("向客户端发送数据"); pw.flush(); //4.禁用此套接字的输出流 socket.shutdownOutput();

注意: 相关流的关闭(如:br.close())

最新回复(0)