网络编程—服务器与客户端对话
服务器:
public class Server {
public static void main(String[] args) throws IOException {
//创建服务套接字
ServerSocket server=new ServerSocket(6666);
System.out.println("服务器启动");
//2.调用accept等待客户端
Socket client =server.accept();
//3.通过客户端获取输入输出流
InputStream is=client.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"UTF-8");
BufferedReader br=new BufferedReader(isr);
OutputStream os=client.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os,"UTF-8");
PrintWriter pw=new PrintWriter(osw);
//4.读取数据
String message=br.readLine();
System.out.println("客户端说:"+message);
//5.响应数据
pw.println("你也好吗!");
pw.flush();
//6.关闭
pw.close();
br.close();
client.close();
server.close();
}
}
客户端:
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
//创建客户端,连接指定的IP+端口号
Socket client=new Socket("192.168.0.109",6666);
//2.获取输入输出流
InputStream is=client.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"UTF-8");
BufferedReader br=new BufferedReader(isr);
OutputStream os=client.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os,"UTF-8");
PrintWriter pw=new PrintWriter(osw);
//3.发送数据
pw.println("服务端!你好啊");
pw.flush();
//4.接受响应数据
String message=br.readLine();
System.out.println("服务端说:"+message);
//关闭
pw.close();
br.close();
client.close();
}
}
2.服务器与客户端对话2
服务器端:
public class Server {
/*
* 服务器,接受多个客户请求!
* 主线程:接受请求
* 子线程:负责接受数据
*/
public static void main(String[] args) throws IOException {
ServerSocket server=new ServerSocket(8888);
System.out.println("服务器启动---");
while(true) {
Socket client=server.accept();
DataThread dt=new DataThread(client);
dt.start();
}
}
}
public class DataThread extends Thread {
private Socket client;
public DataThread(Socket client) {
this.client=client;
}
Scanner sc=new Scanner(System.in);
public void run() {
//接受数据
try {
InputStream is=client.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is,"UTF-8"));
OutputStream os=client.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os,"UTF-8");
PrintWriter pw=new PrintWriter(osw);
while(true) {
String msg=br.readLine();
System.out.println(client.getInetAddress().getHostName()+"说:"+msg);
String callmsg=sc.next();
pw.println(callmsg);
pw.flush();
if(msg.equals("byebye")||msg.equals("886")) {
System.out.println(client.getInetAddress().getHostName()+"退出了聊天!");
break;
}
}
} catch (IOException e) {
System.out.println(client.getInetAddress().getHostName()+"退出来了聊天~");
}
}
}
客户端:
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client = new Socket("192.168.0.109",8888);
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream(),"UTF-8"));
OutputStream os=client.getOutputStream();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,"UTF-8"));
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("请输入您要说的内容:");
String msg = sc.next();
pw.println(msg);
pw.flush();
String callmsg = br.readLine();
System.out.println("服务端回复:"+callmsg);
if(msg.equals("byebye") || msg.equals("886")) {
break;
}
}
pw.close();
client.close();
System.out.println("您退出了!");
}
}