服务器和客户端相互对话,使用打印流和缓冲流包装后,提高效率
客户端
package com.m.demo5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClientSocket {
public static void main(String[] args) throws IOException {
Socket client=new Socket("127.0.0.1",9999);//创建客户端 本机ip地址,端口号随便输的
// OutputStream cops = client.getOutputStream();//获取客户端输出流对象
///使用打印流和缓冲流来提高效率,实现相互对话
///使用字符打印流需要字符对象,所以需要转换流 转换
// OutputStreamWriter osw=new OutputStreamWriter(cops);
// InputStream cips = client.getInputStream();//获取客户端输入流对象,用来接受服务器消息
PrintWriter ps=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);//自动更新缓冲区
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
Scanner input = new Scanner(System.in);
while(true) {
System.out.println("请输入信息");
String str=input.nextLine();
if(str.equals("end")) {
break;
}
ps.println(str);//向服务器发送信息
接收信息
System.out.println("服务器说:"+" "+br.readLine());
}
/关闭流和客户端
ps.close();
br.close();
client.close();
}
}
服务器
package com.m.demo5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerSocketTcp {
public static void main(String[] args) throws IOException {
System.out.println("等待客户端信息");
//创建服务器对象
ServerSocket server=new ServerSocket(9999);//指定和客户端一致的端口号
Socket accept = server.accept();//使用accept 调用输入 输出方法
///接受信息
BufferedReader br=new BufferedReader(new InputStreamReader(accept.getInputStream()));
发送信息
PrintWriter pw=new PrintWriter(new OutputStreamWriter(accept.getOutputStream()),true);
Scanner input = new Scanner(System.in);
while(true) {
System.out.println(accept.getInetAddress()+"发来消息:"+br.readLine());
System.out.println("请服务器输入信息");
String str=input.nextLine();
if(str.equals("end")) {
break;
}
pw.println(str);
}
///关闭流和服务器
pw.close();
br.close();
accept.close();
server.close();
}
}



