二十三、网络编程

1. 客户端

public static void main(String[] args) throws Exception {
		//1.创建客户端,连接指定的IP+端口号
		Socket client = new Socket("192.168.31.97",7777);
		//2.获取输入输出流
		InputStream is = client.getInputStream();
		InputStreamReader isr = new InputStreamReader(is,"UTF-8");
		BufferedReader br = new BufferedReader(isr);
	
		OutputStream os = client.getOutputStream();
		OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");
		PrintWriter pw = new PrintWriter(osw);
		//3.发送数据
		pw.println("服务端!我左少来了");
		pw.flush();
		//4.接收相应数据
		String message = br.readLine();
		System.out.println("服务器说:"+message);
		//5.关闭
		pw.close();
		br.close();
		client.close();
	}

2. 服务端

public static void main(String[] args) throws IOException {
		//1.创建服务套接字
		ServerSocket server = new ServerSocket(7777);
		System.out.println("服务端已启动");
		//2.调用accept等待客户端
		Socket client = server.accept();
		//3.通过客户端获取输入输出流
		InputStream is = client.getInputStream();
		InputStreamReader isr = new InputStreamReader(is,"UTF-8");
		BufferedReader br = new BufferedReader(isr);
		
		OutputStream os = client.getOutputStream();
		OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");
		PrintWriter pw = new PrintWriter(osw);
		//4.读取数据
		String message = br.readLine();
		System.out.println("客户端说:"+message);
		//5.响应数据
		pw.println("收到");
		pw.flush();
		//6.关闭
		pw.close();
		br.close();
		client.close();
		server.close();
	}

3.多线程服务端

ServerSocket server = new ServerSocket(8888);
		System.out.println("服务端已启动");
		while(true) {
			Socket client = server.accept();
			DataThread dt = new DataThread(client);
			dt.start();
		}
		
public class DataThread extends Thread{
	private Socket client;
	public DataThread(Socket client) {
		this.client = client;
	}
	public void run() {
		try {
			InputStream is = client.getInputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
			while(true) {
				String msg = br.readLine();
				System.out.println(client.getInetAddress().getHostName()+"说:"+msg);
			if(msg.equals("byebye")||msg.equals("886")) {
				System.out.println(client.getInetAddress().getHostName()+"退出了聊天");
				break;
			}
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

4. 客户端注册

public class Server2 {
	private Properties userPros;
	
	public Server2() {
		userPros = new Properties();
		File file = new File("Files\\userPros.properties");
		if(file.exists()) {//文件存在
			//把properties文件里的内容加载到properties集合里
			try {
				userPros.load(new FileReader(file));
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
		}
	}
	
	public void registerUser() {
		//1.创建服务端
		try {
			ServerSocket server = new ServerSocket(9999);
			System.out.println("服务端启动。。。");
		//2.接收客户端
			Socket client = server.accept();
		//3.输入流和输出流
			BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
			PrintWriter pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
		//4.接收数据。。。zhangsan#123
			String user = br.readLine();
			String[] users = user.split("#");
			String username = users[0];
			String password = users[1];
			//对用户名做判断
			if(userPros.containsKey(username)) {
				pw.println("用户名存在,请重新注册");
				pw.flush();
			}else {
				userPros.setProperty(username, password);
				//1.将集合加载到文件中
				userPros.store(new FileWriter("Files\\userPros.properties"), "用户信息");
				pw.println("注册成功");
				pw.flush();
			}
				
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值