客户端
public class Client {
private Socket socket;
public Client() {
try {
System.out.println("链接开始");
// 端口号是计算机提供服务的接口的编码
socket = new Socket("localhost",8088); //IP地址,端口号
System.out.println("连接成功");
} catch (IOException e) {
e.printStackTrace();
}
}
public void start(){
try {
/**
*想要发出信息,需要从socket对象中获取输出流
*/
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os,"utf-8");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw,true); //自动调用flush
Scanner scr = new Scanner(System.in);
while (true){
String msg = scr.nextLine();
pw.println(msg);
}
}catch (Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
Client client = new Client();
client.start();
}
}
服务端
public class Server {
private ServerSocket server;
public Server() {
try {
System.out.println("服务器启动中");
server = new ServerSocket(8088);
System.out.println("服务器启动完毕");
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(){
/*
Socket accept()
该方法是一个阻塞方法,调用后,程序暂停等待客户端的信息发送过来
没有信息过来就一直等
*/
try {
System.out.println("等待客户链接");
Socket socket = server.accept();
System.out.println("一个客户端链接了");
/*
从socket中获得输入流
InputStream getInputStream()
*/
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"utf-8");
BufferedReader br = new BufferedReader(isr);
String msg; //linux系统停到客户端后会一直输出空,导致无法控制。写成这种可以避免
while ((msg=br.readLine())!=null) {
// = br.readLine();
System.out.println(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Server server = new Server();
server.start();
}
}
- Socket accept()
该方法是一个阻塞方法,调用后,程序暂停等待客户端的信息发送过来
没有信息过来就一直等