客户端:
1. 数据发送:
//1.连接
Socket sk = new Socket(address,port);
//2.连接上之后放到输出流中
OutputStream os = sk.getOutputStream();
// 3.将对象的格式表示打印到文本输出流
PrintWriter pw = new PrintWriter(os);
//4.向服务器写入需要发送信息!
pw.write("向服务器发送信息!");
//刷新write,不然服务端可能接收不到数据。
pw.flush();
//5.禁用此套接字的输出流。
sk.shutdownOutput();
- 数据接收
//1.获取从服务器的输出流数据,放到客户端的输入流中。
InputStream ins = sk.getInputStream();
//2.将字节流数据转换成字符流数据放到字符缓冲流中
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
//3.读取服务器发送过来的数据(解析数据)
String str = null ;
StringBuffer sb = new StringBuffer();
while((str = br.readLine()) !=null){
sb.append(str);
}
服务器端
//开启服务
ServerSocket ssocket = new ServerSocket(port);
//等待连接的Socket,他在等生成实例,生成了便说明有连接成功了
Socket socket ;
while(true){
socket = ssocket.accept();
//每接收到一个客户端连接刚创建一个线程来处理该连接的情况
Thread t = new Thread(new MyRunnable(socket));
t.start();
}
- 服务器接收数据:
Socket socket ;
//1.连接上之后获取对方传过来的信息
InputStream ins = socket.getInputStream();
//2.将字节流数据转换成字符流数据放到字符缓冲流中
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
//3.解析数据
StringBuffer info = new StringBuffer();
String linedata = null;
//将信息收信进info
while((linedata = br.readLine() ) != null){
info.append(linedata);
}
//将信息按约定的解析
String[] list = info.toString()==null?null:info.toString().split(";");
//4.禁用此套接字的输入流
socket.shutdownInput();
- 服务器输出数据
//1.将结果返回给客户端
OutputStream os = socket.getOutputStream();
// 2.将对象的格式表示打印到文本输出流
PrintWriter pw = new PrintWriter(os);
//3.向客户端发送数据
pw.write("向客户端发送数据");
pw.flush();
//4.禁用此套接字的输出流
socket.shutdownOutput();
注意:
相关流的关闭(如:br.close())