Socket之 PrintWriter 与 Scanner ;
-
作用:专门用来处理字符串信息的
-
PrintWriter : 高级输出流
-
Scanner : 高级输入流
基本用法
package com.qianfeng.xqc.day0318.socketPrintWriterScanner;
import java.io.File;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class TestPS {
public static void main(String[] args) throws Exception {
Socket socket = new Socket();
Scanner scan1 = new Scanner(System.in);//用作键盘录入
Scanner scan2 = new Scanner(new File("aa.txt"));//用作文件读取
Scanner scan3 = new Scanner(socket.getInputStream());//网络通信里面去读取对方发给我的信息
scan1.nextLine();//读取键盘录入的信息
scan2.nextLine();//读取文件里面的信息
scan3.nextLine();//读取socket流里面的信息(服务端或者客户端发送的)
PrintWriter pw1 = new PrintWriter(System.out);
PrintWriter pw2 = new PrintWriter("aa.txt");
PrintWriter pw3 = new PrintWriter(socket.getOutputStream());
//使用输出之后一定要flush
pw1.println("控制台打印");pw1.flush();
pw2.println("写到文件里面");pw2.flush();
pw3.println("发送给服务器或者客户端");pw3.flush();
}
}
在socket中应用
服务端
package com.qianfeng.xqc.day0318.socketPrintWriterScanner;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class DemoService {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动...");
Socket service = serverSocket.accept();
//读取客户端发来的消息
Scanner scan = new Scanner(service.getInputStream());
String msg = scan.nextLine();
System.out.println("客户端说:" + msg);
//发送消息给客户端
PrintWriter pw = new PrintWriter(service.getOutputStream());
pw.println("你好!"); //输出信息到缓冲
pw.flush(); //必须,从缓冲丢给你,并且把缓冲刷新
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端
package com.qianfeng.xqc.day0318.socketPrintWriterScanner;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class DemoClient {
static int port = 8888;
static String ip = "127.0.0.1";
public static void main(String[] args) {
try {
Socket client = new Socket(ip,port);
//发送消息给服务端
PrintWriter pw = new PrintWriter(client.getOutputStream());
pw.println("你好!");
pw.flush();
//读取服务端发来的消息
Scanner scan = new Scanner(client.getInputStream());
String msg = scan.nextLine();
System.out.println("服务端说:" + msg);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}