服务器
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Demo2 {
static boolean fig = true;
public static void main(String[] args) throws IOException {
Scanner is = new Scanner(System.in);//获取控制台输入
ServerSocket socket = new ServerSocket(12347);//开放端口号
Socket so = socket.accept();//等待连接
InputStream in = so.getInputStream();//从连接中获取数据的ip流
DataInputStream ins = new DataInputStream(in);
DataOutputStream ou = new DataOutputStream(so.getOutputStream());//获取输出流
ou.writeUTF("连接成功!请输入");
while(true) { //循环连接与输出
String a = ins.readUTF();//获取IO流中的数据
System.out.println(a);
String v = is.next();
ou.writeUTF(v); //写入控制台数据到IO流
if(a.equals("拜拜")) {
break;
}
}
// OutputStream out = so.getOutputStream();
// PrintWriter print = new PrintWriter(out);
//
//
// String a = is.next();
// print.print(a);
//
//
//
// print.close();
//清空资源
//注意:关闭资源按顺序来
ou.close();
ins.close();
so.close();
socket.close();
}
}
客户端
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Demo2s {
static boolean fig = true;
public static void main(String[] args) throws UnknownHostException, IOException {
Socket so = new Socket("127.0.0.1",12347);//连接相应的IP地址所对应的端口号
Scanner is = new Scanner (System.in);
// InputStream in = so.getInputStream();
// BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//
// String a = reader.readLine();
// System.out.println(a);
OutputStream ou = so.getOutputStream(); //获取输出
DataOutputStream out = new DataOutputStream(ou);//转化格式
DataInputStream in = new DataInputStream(so.getInputStream());//同理
while(true) {//循环输入和输出
String c = in.readUTF();
System.out.println(c);
if(c.equals("拜拜")) {
break;
}
out.writeUTF(is.next());
}
out.close();
ou.close();
so.close();
}
}
注意:资源的关闭要按照顺序来,这里只能一条数据一条数据的轮流发送,如果想实现一个人同时发送多条信息,可以将输入和输出分开使用多线程实现
但在控制台上不建议,不好观看
建了个学习群,目前没得人,欢迎加入
群号:938918339