课堂案例
昨天作业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();
}
}
运行效果图:
课后习题:
- 有连接 无连接 TCP UDP
- ABCE
- AB
- getInputStream getOutputStream 关闭流 关闭Socket对象
ServerSocket accept(); Socket Socket