Java网络编程练习(客户端与服务器相互对话)

服务器和客户端相互对话,使用打印流和缓冲流包装后,提高效率

客户端

package com.m.demo5;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ClientSocket {

	public static void main(String[] args) throws IOException {
		Socket client=new Socket("127.0.0.1",9999);//创建客户端 本机ip地址,端口号随便输的
//		OutputStream cops = client.getOutputStream();//获取客户端输出流对象
		///使用打印流和缓冲流来提高效率,实现相互对话
		///使用字符打印流需要字符对象,所以需要转换流 转换
//		OutputStreamWriter osw=new OutputStreamWriter(cops);
		
//		InputStream cips = client.getInputStream();//获取客户端输入流对象,用来接受服务器消息
		PrintWriter ps=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);//自动更新缓冲区
		BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
		Scanner input = new Scanner(System.in);
		while(true) {
			System.out.println("请输入信息");
			String str=input.nextLine();
			if(str.equals("end")) {
				break;
			}
			ps.println(str);//向服务器发送信息
			
			接收信息
			System.out.println("服务器说:"+" "+br.readLine());
			
		}
		
		/关闭流和客户端
		ps.close();
		br.close();
		client.close();
		

	}

}

服务器

package com.m.demo5;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerSocketTcp {

	public static void main(String[] args) throws IOException {
		System.out.println("等待客户端信息");
		//创建服务器对象
		ServerSocket server=new ServerSocket(9999);//指定和客户端一致的端口号
		Socket accept = server.accept();//使用accept 调用输入 输出方法
		
		///接受信息
		BufferedReader br=new BufferedReader(new InputStreamReader(accept.getInputStream()));
		发送信息
		PrintWriter pw=new PrintWriter(new OutputStreamWriter(accept.getOutputStream()),true);
		Scanner input = new Scanner(System.in);
		while(true) {
			System.out.println(accept.getInetAddress()+"发来消息:"+br.readLine());
			System.out.println("请服务器输入信息");
			String str=input.nextLine();
			if(str.equals("end")) {
				break;
			}
			pw.println(str);
			
			
		}
		
		///关闭流和服务器
		pw.close();
		br.close();
		accept.close();
		server.close();
		
		

	}

}

你可能感兴趣的:(Java基础学习,java,网络,服务器)