ServerSocket serverSocket = new ServerSocket(10086); System.out.println("准备接受信号"); Socket accept = serverSocket.accept(); System.out.println("接收到"+accept.getRemoteSocketAddress()+"的信号"); InputStream inputStream = accept.getInputStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); byte []brr=new byte[1024*8]; int read; File file = new File("net-app\\src\\com\\itheima\\d10brother\\ly.mp4"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file)); while ((read=bufferedInputStream.read())!=-1){ System.out.println(read); bufferedOutputStream.write(brr,0,read); } System.out.println("复制完成");
时间: 2024-03-30 07:37:48 浏览: 91
这段代码是一个简单的网络文件传输的服务端代码。该代码通过创建一个ServerSocket对象来监听指定端口(10086),等待客户端的连接。一旦有客户端连接成功,就会通过accept()方法得到一个Socket对象,然后从Socket对象中获取InputStream,再通过BufferedInputStream包装一下,就可以读取客户端发送过来的数据了,这里是一个mp4文件的二进制流。然后再将读取到的二进制流写入到指定的文件中,最后输出“复制完成”表示文件传输完成。需要注意的是,这个代码只能传输小文件,如果传输的文件较大,则需要采用分段传输的方式,否则会发生内存溢出。
相关问题
private ServerSocket serverSocket; public BirdBootApplication(){ try { System.out.println("正在启动服务端..."); serverSocket = new ServerSocket(8088); System.out.println("服务端启动完毕!"); } catch (IOException e) { e.printStackTrace(); } } public void start() { try { while (true) { System.out.println("等待客户端连接..."); Socket socket = serverSocket.accept(); System.out.println("一个客户端连接了"); //启动线程来处理该客户端交互 ClientHandler handler = new ClientHandler(socket); //1:这里要传参 2:如果编译报错说明ClientHandler没有实现Runnable接口 Thread t = new Thread(handler); t.start(); } } catch(IOException e){ e.printStackTrace(); } } public static void main(String[] args) { BirdBootApplication application = new BirdBootApplication(); application.start(); } } 怎么添加404页面
要添加 404 页面,可以在 static 目录下创建一个名为 404.html 的文件,然后在 ClientHandler 类中修改如下代码:
```
if (file.isFile()) {
statusCode = 200;
statusReason = "OK";
} else {
statusCode = 404;
statusReason = "Not Found";
file = new File(staticDir, "404.html"); // 使用 404.html 文件作为响应内容
}
```
这样,当请求的文件不存在时,就会返回 404 状态码和 404.html 文件的内容。注意,404.html 文件必须存在于 static 目录下,否则会抛出 FileNotFoundException。
以下是基于Java语言的TCP面向连接的简单聊天交互程序的实现: 服务器端代码: ```java import java.io.*; import java.net.*; public class TCPServer { public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服务器已启动,等待客户端连接..."); Socket socket = serverSocket.accept(); System.out.println("客户端已连接,IP地址为:" + socket.getInetAddress().getHostAddress()); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); String message; while ((message = br.readLine()) != null) { System.out.println("客户端发来消息:" + message); pw.println("服务器已收到消息:" + message); } br.close(); pw.close(); socket.close(); serverSocket.close(); } } ``` 客户端代码: ```java import java.io.*; import java.net.*; public class TCPClient { public static void main(String[] args) throws Exception { Socket socket = new Socket("localhost", 8888); System.out.println("已连接服务器,IP地址为:" + socket.getInetAddress().getHostAddress()); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); String message; while ((message = br.readLine()) != null) { out.println(message); System.out.println("已发送消息:" + message); System.out.println("服务器回复:" + in.readLine()); } br.close(); in.close(); out.close(); socket.close(); } } ``` 运行方式: 1. 在命令行中进入服务器端代码所在目录,执行`javac TCPServer.java`编译代码,然后执行`java TCPServer`启动服务器端程序; 2. 在命令行中进入客户端代码所在目录,执行`javac TCPClient.java`编译代码,然后执行`java TCPClient`启动客户端程序; 3. 在客户端程序中输入要发送的消息,回车后即可发送并接收服务器端的回复。
谢谢您提供的示例代码,这是一个基于Java语言实现的简单TCP面向连接的聊天程序,可以实现客户端与服务器端之间的交互。在这个程序中,服务器端通过在一个循环中不断接收来自客户端的消息,然后将消息回传给客户端。而客户端通过从标准输入中读取用户输入的消息,然后将消息发送到服务器端,并从服务器端读取回复。这个程序可以用作一个简单的聊天室,但是在实际应用中需要考虑更多的安全性和可靠性问题。
阅读全文