实现的另一种方式:使用readUTF()和writeUTF()方法:
我们讲的上一种方法时使用了read()方法和write()方法读取和写入内容,这两种方法使用的时默认的编码格式
而使用readUTF()和writeUTF()方法是将内容转化为utf-8的编码格式
使用此种方法时,readUTF()和writeUTF()方法必须同时使用.即使用readUTF()读取数据,那么写入时就必须使用writeUTF()方法,否则就会报错
代码实现:
- 客户端
package javanetwork.day2.demo1; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.Scanner; public class Client { public static void main(String[] args) throws IOException { Socket socket = new Socket("192.168.43.149",9999); DataOutputStream dout = new DataOutputStream(socket.getOutputStream()); DataInputStream din = new DataInputStream(socket.getInputStream()); Scanner scanner = new Scanner(System.in); while (true){ System.out.println("客户端输入:"); String msg = scanner.next(); dout.writeUTF(msg); System.out.println("服务器端说:"+din.readUTF()); } } }
- 服务器端
package javanetwork.day2.demo1; import java.io.DataInputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(9999); Socket socket = serverSocket.accept(); DataInputStream din = new DataInputStream(socket.getInputStream()); DataOutputStream dout = new DataOutputStream(socket.getOutputStream()); Scanner scanner = new Scanner(System.in); while(true){ String msg = din.readUTF(); System.out.println("客户端说"+msg); System.out.println("服务器端输入:"); String msg1 = scanner.next(); dout.writeUTF(msg1); } } }