字符流
字節流
socket和serverSocker
package main.java.com.founder.study.javaio.socket;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Created on 2020/6/23.
*/
public class Server {
public static void main(String[] args) {
final int DEFAULT_PORT = 8888;
ServerSocket serverSocket = null;
final String QUIT = "quit" ;
try {
serverSocket = new ServerSocket(DEFAULT_PORT);
System.out.println("服務器開始啓動默認監聽端口"+DEFAULT_PORT);
while(true){
//這裏會發生阻塞等待客戶端連接
Socket accept = serverSocket.accept();
System.out.println("客戶端"+accept.getPort()+"已經連接");
OutputStream os = accept.getOutputStream();
InputStream is = accept.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
String clientMsg = null;
while ((clientMsg = br.readLine()) != null){
//先收到客戶端
System.out.println("收到客戶端的消息:"+clientMsg);
//再發送給客戶端
bw.write("hello 我是服務端\n");
bw.flush();
if(QUIT.equals(clientMsg)){
break;
}
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package main.java.com.founder.study.javaio.socket;
import java.io.*;
import java.net.Socket;
/**
* Created on 2020/6/23.
*/
public class Client {
public static void main(String[] args) {
final String QUIT = "quit" ;
final String DEFAULT_SERVER_HOST = "127.0.0.1";
final int DEFAULT_PORT = 8888;
Socket socket = null;
BufferedWriter bw =null;
try {
socket = new Socket(DEFAULT_SERVER_HOST,DEFAULT_PORT);
System.out.println("客戶端開始啓動默認端口"+DEFAULT_PORT);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
bw= new BufferedWriter(new OutputStreamWriter(os));
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
while (true){
//先發給服務端
bw.write(consoleReader.readLine()+"\n");
bw.flush();
//我還想再收
String serverMsg = br.readLine();
System.out.println("收到服務端的消息"+serverMsg);
if(QUIT.equals(consoleReader.readLine())){
System.out.println("客戶端斷開連接");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(socket != null){
try {
socket.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}