package net; import java.io.*; import java.net.*; import java.util.Scanner; public class Client { public static final String SERVER_IP = "127.0.0.1"; public static final int SERVER_PORT = 8080; public static void main(String[] args) throws Exception { Socket socket = new Socket(SERVER_IP, SERVER_PORT); System.out.println("Connection established."); Scanner input=new Scanner(System.in,"GBK"); System.out.println("input your file:");//输入的要是文件的全名(包括后缀)和路径 //D:/Javawork/实验文件/计网实验/hello.txt String fileName = input.nextLine(); OutputStream out = socket.getOutputStream(); PrintWriter pw = new PrintWriter(out); pw.println(fileName); // 发送文件名 pw.flush(); InputStream in = new FileInputStream(fileName); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } in.close(); out.close(); socket.close(); System.out.println(fileName + " is sent."); } }
时间: 2024-02-14 20:20:52 浏览: 23
这是一个 Java 的客户端程序,用于向指定的 IP 地址和端口号的服务器文件。客户端程序首先建立与服务器的 Socket 连接,然后要求用户输入要发送的文件名(包括路径),并将其发送给服务器。接下来,客户端程序将文件内容读入一个字节数组中,并使用 OutputStream 将其发送到服务器。最后,客户端程序关闭与服务器的连接并输出文件名以表示文件已发送成功。
相关问题
package Expert import java.util.*;和package import java.util.*;的区别
这两个语句的区别在于导入的包的范围不同。
首先,`import java.util.*;` 导入了 `java.util` 包中的所有类和接口,包括 `ArrayList`、`HashMap`、`Scanner` 等等。当您需要使用该包中的任何类或接口时,您可以直接使用类名,而无需使用完全限定的类名。
其次,`package Expert import java.util.*;` 语句是一个 Java 源文件中的 package 声明和导入声明。它指定了当前 Java 源文件的包名和要导入的包。在这种情况下,它告诉编译器当前 Java 源文件属于 `Expert` 包,并且要导入 `java.util` 包中的所有类和接口。
因此,它们的作用是不同的。`import java.util.*;` 语句只是导入了一个包,而 `package Expert import java.util.*;` 语句同时指定了当前 Java 源文件的包名和要导入的包。
import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner;
这是一个Java程序的头文件部分,包含了需要导入的几个类。其中`java.io.*`是用于输入输出的类库,`java.net.ServerSocket`和`java.net.Socket`是用于网络通讯的类库,`java.util.Scanner`是用于读取控制台输入的类库。这些类库可以帮助我们实现基于TCP协议的通讯录系统的功能。