客户端:
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();
}
}
}
本文详细介绍了一个基于Java的网络通信案例,包括客户端和服务端的代码实现,以及如何通过Socket进行数据交换。服务端采用多线程处理多个客户端请求,展示了网络编程的基本原理和技术要点。
1475

被折叠的 条评论
为什么被折叠?



