// 升级版
//客户端
public class Climit {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",3023);
new WriteThread("客户端:",socket).start();
new ReadThead(socket).start();
//发送信息,第一次握手
/* OutputStream os = socket.getOutputStream();
os.write("客户端:请求连接!".getBytes());
//接收服务端的消息
InputStream is = socket.getInputStream();
byte[] b = new byte[1024];
int read = is.read(b);
System.out.println(new java.lang.String(b,0,read));
socket.close();*/
}
}
//服务端
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(3023);
//接收消息
Socket accept = serverSocket.accept();
new WriteThread("服务端:",accept).start();
new ReadThead(accept).start();
/* InputStream is = accept.getInputStream();
byte[] b = new byte[1024];
int len = is.read(b);
System.out.println(new java.lang.String(b,0,len));
//给客户端做出回应
OutputStream os = accept.getOutputStream();
os.write("服务端:怎么了!".getBytes());
serverSocket.close();*/
}
}
//多线程
//读
public class ReadThead extends Thread{
private InputStream is;
private Socket socket;
public ReadThead(Socket socket) throws IOException {
this.socket = socket;
this.is = socket.getInputStream();
}
@Override
public void run() {
byte[] b = new byte[1024];
try {
while (true){
int len = is.read(b);
System.out.println(new String(b, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeAll(is,socket);
}
}
//(写)
public class WriteThread extends Thread{
//private Scanner sc = new Scanner(System.in);
private String name;
//private OutputStream os;
private BufferedWriter bw;
private BufferedReader br;
private Socket socket;
public WriteThread(String name,Socket socket) throws IOException {
this.name = name;
this.socket = socket;
//this.os = socket.getOutputStream();
this.bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//通过转换流把标准输入流装换成字符流
this.br = new BufferedReader(new InputStreamReader(System.in));
}
@Override
public void run() {
try {
while (true) {
//os.write((name + ";" + sc.nextLine()).getBytes());
bw.write(name+":"+br.readLine());
bw.newLine();
bw.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeAll(bw,socket);
}
}
}
TCP(Socket)套接字实现客户端与服务端的交互,一次可以发送多条数据发
最新推荐文章于 2023-07-03 19:24:50 发布