3.18学习内容:课后习题、网络编程

课堂案例昨天作业18题:package day33.t1;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.Scanner;...
摘要由CSDN通过智能技术生成

课堂案例

昨天作业18题:
package day33.t1;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;

public class TestQuestion18 {

public static void main(String[] args) throws Exception {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入文件名");
	String fileName =sc.next();
	copyFile(fileName);
	
}
public static boolean copyFile(String fileName) throws Exception{
	File file =existsFile(fileName);
	if(file != null){
		InputStream is = new FileInputStream(fileName);
		OutputStream os = new FileOutputStream(file);
		
		int len;
		while(true){
			len = is.read();
			if(len ==-1){
				break;
			}
			os.write(len);
		}
		is.close();
		os.close();
	}
	
	
	return false;
	
}



public static File existsFile(String fileName) throws Exception{
	File file = new File(fileName);
	if(file.exists()){
		File copyFile = new File(file.getParent()+"\\copy_"+file.getName());
		copyFile.createNewFile();
		return copyFile;
	}else{
		System.out.println("源文件不存在");
	}
	return null;
}

}

package day33.t1;

import java.net.InetAddress;

public class TestInetAddress {

public static void main(String[] args) throws Exception {
	
	InetAddress local = InetAddress.getLocalHost();
	
	String ip = local.getHostAddress();
	String name = local.getHostName();
	System.out.println(ip+"\t"+name);
	
	InetAddress[] local2 =InetAddress.getAllByName("www.baidu.com");
	for(InetAddress add : local2){
		System.out.println(add.getHostAddress());
	}
}

}
运行效果图:

在这里插入图片描述
Server 与 Client 案例1

Server类
package day33.t2;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

public static void main(String[] args) throws Exception {
	//创建服务套接字
	ServerSocket server = new ServerSocket(6666);
	System.out.println("服务器已启动.....");
	//调用accept方法 等待客户端
	Socket client =server.accept();
	
	//通过客户端获取输入、输出流 方法:client.getIn/OutputStream
	InputStream  is = client.getInputStream();
	InputStreamReader isr = new InputStreamReader(is);
	BufferedReader br = new BufferedReader(isr);
	
	OutputStream os = client.getOutputStream();
	PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
	
	//读取数据
	String message = br.readLine();
	System.out.println("客户端说:"+message);
	//响应数据
	pw.println("How are you");
	pw.flush();
	
	//关闭
	br.close();
	pw.close();
	client.close();
	server.close();
	
}

}

Client类:

package day33.t2;

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.net.UnknownHostException;

public class Client {
public static void main(String[] args) throws Exception, IOException {
//创建客户端,连接指定的IP+端口号
Socket client = new Socket(“192.168.137.1”,6666);

	//获得输入输出流
	InputStream  is = client.getInputStream();
	InputStreamReader isr = new InputStreamReader(is);
	BufferedReader br = new BufferedReader(isr);
	
	OutputStream os = client.getOutputStream();
	PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
	//发送数据
	pw.println("hello");
	pw.flush();
	//接收响应数据
	String message = br.readLine();
	System.out.println("服务器说:"+message);
	//关闭
	
	br.close();
	pw.close();
	client.close();
	
}

}
运行结果:
在这里插入图片描述
在这里插入图片描述
案例2:

server:

package day33.t3;

import java.net.ServerSocket;
import java.net.Socket;

public class Server {

public static void main(String[] args) throws Exception {
	
	ServerSocket server = new ServerSocket(7777);
	System.out.println("服务器启动.....");
	
	while(true){
		Socket client =server.accept();
		DataThread dt = new DataThread(client);
		dt.start();
	}
}

}

client:

package day33.t3;

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 Client {

public static void main(String[] args) throws Exception, IOException {
	
	Socket client = new Socket("192.168.137.1",7777);
	
	InputStream is = client.getInputStream();
	BufferedReader br = new BufferedReader(new InputStreamReader(is));
	
	OutputStream os = client.getOutputStream();
	PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
	
	Scanner sc = new Scanner(System.in);
	while(true){
		System.out.println("请输入您要说的内容:");
		String message = sc.next();
		pw.println(message);
		pw.flush();
		
		
		String callback=br.readLine();
		System.out.println("服务器回复说:"+callback);
		if(message.equals("886")|| message.equals("byebye")){
			break;
		}
	}
	pw.close();
	br.close();
	client.close();
	System.out.println("您退出了");

}

}

DataThread

package day33.t3;

import java.io.BufferedReader;
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;

class DataThread extends Thread{
private Socket client;

public DataThread(Socket client){
	this.client=client;
}
Scanner sc = new Scanner(System.in);

public void run(){
	try {
		InputStream is =client.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		
		OutputStream os = client.getOutputStream();
		PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
		
		while(true){
			String message = br.readLine();
			System.out.println(client.getInetAddress().getHostName()+"说:"+message);
			
			System.out.println("请输入您的回复");
			String callback = sc.next();
			pw.println(callback);
			pw.flush();
			if(message.equals("886")  || message.equals("byebye")){
				System.out.println(client.getInetAddress().getHostName()+"退出了聊天");
				break;
			}
		}
		
	} catch (Exception e) {
		System.out.println(client.getInetAddress().getHostName()+"退出了聊天");
	}
}

}
运行效果图:

在这里插入图片描述
案例3:

server:

package day33.t4;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
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.Properties;

public class Server {
private Properties userPros;

public Server(){
	userPros = new Properties();
	
	File file = new File("Flies\\userPros.properties");
	if(file.exists()){
		try {
			userPros.load(new FileReader(file));
			//把properties文件里的内容通过字节流加载到集合中
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

public void registerUser(){

	try {
		ServerSocket server = new ServerSocket(9999);
		System.out.println("服务器启动...");
		
		Socket client = server.accept();
		
		BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
		PrintWriter pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
		
		
		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);
			
			userPros.store(new FileWriter("Files\\userPros.properties"),"用户信息");
			pw.println("注册成功");
			pw.flush();
		}
		pw.close();
		br.close();
		client.close();
		
		
		
	} catch (IOException e) {
		e.printStackTrace();
	}
	
}

}

client:

package day33.t4;

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

public class Client {

public static void main(String[] args) throws Exception, IOException {
	Socket client = new Socket("192.168.43.238",9999);
	
	System.out.println("开始注册");
	Scanner sc = new Scanner(System.in);
	
	System.out.println("请输入用户名");
	String username = sc.next();
	
	System.out.println("请输入密码");
	String password = sc.next();
	
	String userinfo= username+"#"+password;
	
	BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
	PrintWriter pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
	
	pw.println(userinfo);
	pw.flush();
	
	String message = br.readLine();
	System.out.println(message);
	
	pw.close();
	br.close();
	client.close();
}

}

start:

package com.qf.day32.t4.sockets3;

public class Start {
public static void main(String[] args) {
Server server = new Server();
server.registerUser();
}
}

运行效果图:

在这里插入图片描述

课后习题:

  1. 有连接 无连接 TCP UDP
  2. ABCE
  3. AB
  4. getInputStream getOutputStream 关闭流 关闭Socket对象
    ServerSocket accept(); Socket Socket
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值