客户端:
public class Demo02_Client {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1",11111);
//输入流
InputStream inputStream = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
//输出流
PrintStream ps = new PrintStream(socket.getOutputStream());
ps.println("客户端开始请求服务端代码");
System.out.println(br.readLine());
ps.println("我想报名黑马程序员");
System.out.println(br.readLine());
ps.println("大哭!!!能不能给次机会");
/*
* 如果用BufferedWriter的writer必须用下面的写法,否则服务端取不到数据
* BufferedWriter.readLine 读取的是以\n或者\r结尾的数据
*/
/* BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("客户端开始请求服务端");
writer.newLine();
writer.flush();*/
socket.close();
}
}
服务端:
public class Demo02_Server {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(11111);
Socket socket = server.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str = br.readLine();
System.out.println(str);
PrintStream ps = new PrintStream(socket.getOutputStream()); //PrintStream中有写出换行的方法
ps.println("欢迎咨询黑马程序员");
System.out.println(br.readLine());
ps.println("不好意思,爆满了");
System.out.println(br.readLine());
server.close();
}
}
服务端为多线程:
public class Demo02_Server_Thread {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(11111);
while(true){
/*
* 每次接受到一个客户端请求的时候去新建一个线程,
* 而不是每次新建一个线程去执行Socket socket = server.accept();看是否有客户端请求。
*/
Socket socket = server.accept();
new Thread(){
public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str = br.readLine();
System.out.println(str);
PrintStream ps = new PrintStream(socket.getOutputStream()); //PrintStream中有写出换行的方法
ps.println("欢迎咨询黑马程序员");
System.out.println(br.readLine());
ps.println("不好意思,爆满了");
System.out.println(br.readLine());
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
}
}