网络编程,客户端与服务器端进行通信

客户端发信息给服务器端,服务器端也发信息给客户端,而且有时候是同时进行的
 创建两个线程,一个线程获取信息,一个接收信息

服务器端:

public class Server {
	static Socket socket = null;
	public static void main(String[] args) throws IOException {
		//搭建服务器端
		ServerSocket serverSocket = new ServerSocket(8001);
		System.out.println("服务器搭建成功");
		//连接客服端
		socket = serverSocket.accept();
		System.out.println("客户端连接成功");
		Server server =new Server();
		Thread thread = server.new Thread1();
		thread.start();
		Thread thread2 = server.new Thread2();
		thread2.start();
		
	}
	
	public void getMessage() throws IOException {
		//接受客服端的消息
		InputStream inputStream = socket.getInputStream();
		InputStreamReader iReader = new InputStreamReader(inputStream);
		BufferedReader br= new BufferedReader(iReader);
		String string = null;
		while((string = br.readLine())!=null){
			if(string.equals("byte")){
				break;
			}
			System.out.println("来自客户端的消息:》"+string);
		}
				
		System.out.println("聊天结束 ");	
	}
	
	public void sendMessage() throws IOException{
		OutputStream outputStream = socket.getOutputStream();
		PrintStream printStream = new PrintStream(outputStream);
		//从控制台输入信息
		InputStream inputStream= System.in;//标准输入流
		//从字节流到字符流的桥梁 InputStreamReader本神是字符流
		InputStreamReader inputStreamReader =new InputStreamReader(inputStream);
		//加入缓冲流,也叫管道流主要是为了加快速度
		BufferedReader bReader = new BufferedReader(inputStreamReader);
		//c从控制台读取一行数据
		String string = null;
		while((string = bReader.readLine())!=null){
			if(string.equals("byte")){
				break;
			}
			printStream.println(string);
			
		}
		printStream.flush();
		socket.shutdownOutput();
	}
	//成员内部类相当于成员变量
	class Thread1 extends Thread{
		public void run(){
			try {
				getMessage();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	//成员内部类相当于成员变量
		class Thread2 extends Thread{
			public void run(){
				try {
					sendMessage();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
}

客户端:

public class Client {
	static Socket socket = null;
	public static void main(String[] args) throws UnknownHostException, IOException {
		//连接服务器端
		socket = new Socket("127.0.0.1",8001);
		System.out.println("服务器连接成功");
		Client client = new Client();
		//创建线程,发送信息
		Thread1 thread1 = client.new Thread1();
		thread1.start();
		Thread2 thread2 = client.new Thread2();
		thread2.start();
	}
	
	class Thread1 extends Thread{
		public void run(){
			try {
				sendMessage();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	class Thread2 extends Thread{
		public void run(){
			try {
				sendMessage();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	public void sendMessage() throws IOException{
		OutputStream outputStream = socket.getOutputStream();
		PrintStream printStream = new PrintStream(outputStream);
		//从控制台输入信息
		InputStream inputStream= System.in;//标准输入流
		//从字节流到字符流的桥梁 InputStreamReader本神是字符流
		InputStreamReader inputStreamReader =new InputStreamReader(inputStream);
		//加入缓冲流,也叫管道流主要是为了加快速度
		BufferedReader bReader = new BufferedReader(inputStreamReader);
		//c从控制台读取一行数据
		String string = null;
		while((string = bReader.readLine())!=null){
			if(string.equals("byte")){
				break;
			}
			printStream.println(string);
			
		}
		printStream.flush();
		socket.shutdownOutput();
	}
	
	public void getMessage() throws IOException {
		//接受客服端的消息
		InputStream inputStream = socket.getInputStream();
		InputStreamReader iReader = new InputStreamReader(inputStream);
		BufferedReader br= new BufferedReader(iReader);
		String string = null;
		while((string = br.readLine())!=null){
			if(string.equals("byte")){
				break;
			}
			System.out.println("服务器客户端的消息:》"+string);
		}
				
		System.out.println("聊天结束 ");	
	}
	
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值