基于TCP的点对点通信

 服务器端:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {

	public static void main(String[] args) throws IOException {
		// 服务器端监听
		ServerSocket ss = new ServerSocket(8888);

		// 挂起
		Socket server = ss.accept();

		// 封装输入流、输出流
		BufferedInputStream bis = new BufferedInputStream(server.getInputStream());
		BufferedOutputStream bos = new BufferedOutputStream(server.getOutputStream());

		// 发消息进程
		new Thread(() -> {
			while (true) {
				try {
					bos.write(new Scanner(System.in).nextLine().getBytes());
					bos.flush();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}).start();

		// 收消息进程
		new Thread(() -> {
			while (true) {
				int len = 0;
				byte[] buf = new byte[1024];
				try {
					while ((len = bis.read(buf)) != -1) {
						System.out.println("客户端说:" + new String(buf));
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}).start();

	}
}

客户端:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Client {

	public static void main(String[] args) throws UnknownHostException, IOException {

		// 连接服务器端端口
		Socket client = new Socket("localhost", 8888);

		// 封装输出流、输入流
		BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream());
		BufferedInputStream bis = new BufferedInputStream(client.getInputStream());

		// 发消息进程
		new Thread(() -> {
			while (true) {
				try {
					bos.write(new Scanner(System.in).nextLine().getBytes());
					bos.flush();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}).start();

		// 收消息进程
		new Thread(() -> {
			while (true) {
				int len = 0;
				byte[] buf = new byte[1024];
				try {
					while ((len = bis.read(buf)) != -1) {
						System.out.println("服务器端说:" + new String(buf));
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}).start();

	}
}

 

你可能感兴趣的:(Java网络编程)