首页 > 编程语言 >java 网络编程之传输文件

java 网络编程之传输文件

时间:2023-11-02 21:11:40浏览次数:32  
标签:文件 java 编程 len 传输 ServerSocket new import

需要建两个类,分别作为服务器(接收文件)和客户端(发送文件)

 

1.服务器类:

 1 package 菜鸟教程.网络编程.网络编程之传输文件;
 2 
 3 import java.io.*;
 4 import java.net.InetAddress;
 5 import java.net.ServerSocket;
 6 import java.net.Socket;
 7 
 8 /**
 9  * 服务器-用来接收文件
10  */
11 public class FileServer {
12     public static void main(String[] args) {
13         //自己的ip地址
14         String ip = InetAddress.getLoopbackAddress().getHostAddress();
15         int port = 33999;
16         ServerSocket ss = null;
17         try {
18             ss = new ServerSocket(port);
19             Socket s = ss.accept();//接收从服务器传来的文件
20 //            InputStream in;
21 
22             //接收的文件以ip地址为名显示
23             String cip = s.getRemoteSocketAddress().toString().replace(".", "").replace(":", "") + ".jpg";
24             System.out.println(cip);
25 
26             BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
27 
28             //输出显示接收到的文件
29 //            File file;
30             try {
31                 FileOutputStream fos = new FileOutputStream("C:/Users/zhj/Desktop" + cip);
32                 byte[] buf = new byte[1024];
33                 int len = -1;
34                 while ((len = bis.read(buf)) != -1) {
35                     fos.write(buf, 0, len);
36                 }
37                 fos.close();
38             } catch (IOException e) {
39                 e.printStackTrace();
40             }
41 
42         } catch (IOException e) {
43             e.printStackTrace();
44         }
45 
46 
47     }
48 }

2.客户端类:

package 菜鸟教程.网络编程.网络编程之传输文件;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 客户端-用来发送文件
 */
public class FileClient {
    public static void main(String[] args) {
        String server_ip = "Localhost";//地址是谁,就发给谁,此处设的是本机
        int port = 33999;
        try {
//            ServerSocket ss = new ServerSocket(port);
            Socket s = new Socket(server_ip, port);
            OutputStream os = s.getOutputStream();
            //向服务器发送文件
//            File file;
            FileInputStream fis = new FileInputStream("src/Images/peo.png");//发送给服务器的文件地址
            //
            byte[] buf = new byte[1024];//每次以1kb传输
            int len = -1;
            while ((len = fis.read(buf)) != -1) {
                os.write(buf, 0, len);

            }
            os.flush();
            os.close();


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.运行时,若自己测试(自己给自己传.jpg图片),先运行服务器类,再运行客户端类,成功运行后图片就会显示在服务器类填写的文件路径中.

桌面出现

 

标签:文件,java,编程,len,传输,ServerSocket,new,import
From: https://www.cnblogs.com/szmtjs10/p/17806343.html

相关文章

  • java网络编程与多线程
      一、Java 网络编程网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net包中J2SE的API包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。java.net包中提供了两种常见的网络......
  • 在JavaScript中移除字符串中的重音符号/变音符号
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中移除字符串中的重音符号/变音符号如何从字符串中移除重音符号?特别是在IE6中,我曾经使用过以下代码:accentsTidy=function(s){varr=s.toLowerCase();r=r.replace(newRegExp(/\s/g),"");r=r.replace(......
  • Java NIO包结构简介
    layout:postread_time:trueshow_date:truetitle:JavaNIO包结构date:2023-07-0910:12:10-0600description:JavaNIO包结构简述.img:posts/java-nio/cover.pngtags:[java,IO,JavaNIO,ChannelIO,Buffer,threadsafty,multiplexer,charset]author:尹......
  • Java_消息队列
    消息系统MQ全称MessageQueue(消息队列)消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等,而部分数据库如Redis、MySQL以及phxsql也可实现消息队列的功能系统管理者MessageManager包括Apache的ActiveMQ,Apache的Kafka,RabbitMQ、memcacheQ消息类型......
  • 前端基础之JavaScript
    前端基础之JavaScriptJavaScript概述ECMAScript和JavaScript的关系1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称......
  • JavaScript基础
    引入方式JavaScript程序不能独立运行,它需要被嵌入HTML中,然后浏览器才能执行JavaScript代码。内部引入写在body结束标签的上方。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content=&......
  • JUC并发编程学习笔记(三)生产者和消费者问题
    生产者和消费者问题synchronized版->wait/notifyjuc版->Lock面试:单例模式、排序算法、生产者和消费者、死锁生产者和消费者问题Synchronized版packageorg.example.pc;publicclassA{publicstaticvoidmain(String[]args){Datedate=newDate();......
  • JavaScript知识点
    new操作符1、创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型2、属性和方法被加入到this引用的对象中3、新创建的对象由this所引用,并且最后隐式的返回thisAjax原理1、Ajax的原理简单来说是在用户和服务器之间加了一个中间层(AJAX引擎),通过XmiHttpRequest对象来向服......
  • Java面试题:链表-反转链表
    问题描述给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。示例输入:{1,2,3}返回值:{3,2,1}原题地址:https://www.nowcoder.com/practice/7......
  • JavaScript 将大数组拆分成多个小数组 循环调用接口
    项目需求:数据列表批量选择提交购物车,一次性提交数据量过大接口会报错,传递的参数是选中数据id的数组。项目运行很久了不做大改动,将提交数据总数限制在2000条以内,每500条走一次接口。思路:1.写一个将大数组拆分多个小数组的方法,arr为大数组,len为要拆分的小数组长度arrGroup(arr,......