基于Socket通信

服务端:

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerSocketTest {
	
	public static void main(String[] args) throws Exception {
		ServerSocket s=new ServerSocket(9998);
		System.out.println("我在等待有人连接");
		Socket so=s.accept();
		System.out.println("有人连接了我:"+so.getInetAddress());
		OutputStream os=so.getOutputStream();
		PrintStream out=new PrintStream(os);
		Scanner key=new Scanner(System.in);
		ReadFormClient r=new ReadFormClient(so);
		r.start();
		while (true) {
			String keyreply=key.nextLine();
			out.println(keyreply);
			out.flush();
		}
	}
}
	//此线程负责从客户端读取数据
	class ReadFormClient extends Thread{
		Socket so;
		BufferedReader in;
		public ReadFormClient(Socket so) throws IOException {
			this.so=so;
			InputStream ins=so.getInputStream();
			Reader r=new InputStreamReader(ins);
			in=new BufferedReader(r);
		}
		public void run() {
			while(true) {
				try {
					String li=in.readLine();
					System.out.println("客户端说:"+li);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
	

客户端:

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.net.Socket;
import java.util.Scanner;

public class ClientTest {
	
	public static void main(String[] args) throws Exception{
		Socket s=new Socket("localhost", 9998);
		System.out.println("我是客户端:"+s.getInetAddress());
		OutputStream os=s.getOutputStream();
		PrintStream out=new PrintStream(os);
		Scanner key=new Scanner(System.in);
		//启用多线程读取服务器发的消息
		ReadFromServer r=new ReadFromServer(s);
		r.start();
		while (true) {
			String keyreply=key.nextLine();
			out.println(keyreply);
			out.flush();
		}
	}
}
class ReadFromServer extends Thread{
	Socket so;
	BufferedReader in;
	public ReadFromServer(Socket so) throws IOException {
		this.so = so;
		InputStream ins=so.getInputStream();
		Reader r=new InputStreamReader(ins);
		in=new BufferedReader(r);
	}
	public void run() {
		while (true) {
			try {
				String line=in.readLine();
				System.out.println("服务器端说:"+line);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38146131/article/details/82251996