使用字符流
- 编写一个客户端和服务器
- 服务端在 9999端口监听
- 客户端连接到服务端,发送 "hello, server" ,并接收服务端回发的"hello,client"
- 服务端接收到 客户端发送的 信息,输出,并发送 "hello, client",再退出

客户端
import java.io.*;
import java.net.*;
/**
* @author 小小小白白白白
*/
public class Client1 {
public static void main(String[] args) throws IOException {
//1 连接服务器端(ip,端口) 这里因为连接的是自己的计算机
//如果连接的是别的计算机,可以通过域名+端口号
Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
System.out.println("客户端 socket返回="+socket.getClass());
//2 连接上后生成Socket,通过socket.getOutputStream得到和服务器关联的输出流对象
OutputStream outputStream = socket.getOutputStream();
//3 使用字符流写入数据,new OutputStreamWriter是转换流
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write("hello server 字符流");
//写入结束的标记,相当于回车,接收的时候也要有对应的readline
bufferedWriter.newLine();
//字符流需要手动刷新,数据才能被传输
bufferedWriter.flush();
//4 获取输出流
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String s = bufferedReader.readLine();
System.out.println(s);
//关闭流!这里只需要关闭最外层的流即可,最后打开的要先关闭
bufferedReader.close();
bufferedWriter.close();
socket.close();
System.out.println("传输成功已关闭");
}
}
服务端
import java.io.*;
import java.net.*;
/**
* @author 小小小白白白白
*/
public class Server1 {
public static void main(String[] args) throws IOException {
//1 在本机的9999端口监听,等待连接
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("服务器在9999端口监听等待连接...");
//2 当没有客户端连接9999端口时,程序会堵塞,等待连接
// 也就是代码执行到这一行就不会向下执行了
//这个ServerSocket可以通过accept()返回多个socket,实现多个客户端连接服务器
Socket socket = serverSocket.accept();
System.out.println("服务器 socket="+socket.getClass());
//3 通过socket.getInputStream读取客户端写入数据通道的数据,显示
InputStream inputStream = socket.getInputStream();
//4 IO读取字符流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
//与客户端的newLine对应
String s = bufferedReader.readLine();
System.out.println(s);
//5 获取输出流
OutputStream outputStream = socket.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write("hello client 字符流");
bufferedWriter.newLine();
bufferedWriter.flush();
//关闭流
bufferedWriter.close();
bufferedReader.close();
socket.close();
serverSocket.close();
}
}
