网络编程文件传输小练习

客户端

public class client {public static void main(String[] args) {try {//创建一个客户端的发送对象,指定一个端口号Socket socket=new Socket("127.0.0.1",10000);//读取本地文件的数据//将本地文件读到输入流中//bis是输入流,将本地文件读入流中,bos是输出流,将文件内容按字节形式传输到服务器端BufferedInputStream bis=new BufferedInputStream(new FileInputStream("src\\filesocket\\c.jpg"));BufferedOutputStream bos=new BufferedOutputStream(socket.getOutputStream());byte[] bytes=new byte[1024];int len;//每次最多传1024kbwhile((len= bis.read(bytes))!=-1){//传到服务器端bos.write(bytes,0,len);}//强制将缓冲区的数据立刻写入到输入流中,可避免传输不完整bos.flush();//关闭输出流socket.shutdownOutput();//接受服务器的回写数据(feedback signal)//给输入流包括一个缓冲流BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));//读取一整行String line=br.readLine();System.out.println(line);bis.close();bos.close();br.close();socket.close();} catch (IOException e) {throw new RuntimeException(e);}}
}

服务器端

public class server {public static void main(String[] args) {try {//创建客户端通道ServerSocket ss=new ServerSocket(10000);//等待响应,会返回一个Socket对象Socket socket=ss.accept();//输入流读取数据BufferedInputStream bis=new BufferedInputStream(socket.getInputStream());//输出流写到文件里BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("src\\filesocket\\d.png"));//相同操作int len;byte[] bytes=new byte[1024];while((len=bis.read(bytes))!=-1){bos.write(bytes,0,len);}//返回消息BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write("上传成功");//添加一个换行符bw.newLine();bw.flush();bis.close();bos.close();socket.close();ss.close();} catch (IOException e) {throw new RuntimeException(e);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#-哈希表

哈希表(Hash Table)是一种数据结构,用于实现键值对之间的映射关系。在哈希表中,通过将键(key)通过哈希函数转换成索引,然后将值(value)存储在对应索引的位置上&#xff0…

人工智能_大模型033_LangChain003_记忆封装Memory上下文控制机制_LCEL表达式语言---人工智能工作笔记0168

## 三、记忆封装:Memory ### 3.1、对话上下文:ConversationBufferMemory from langchain.memory import ConversationBufferMemory, ConversationBufferWindowMemoryhistory = ConversationBufferMemory() history.save_context({"input": "你好啊"}…

从建表语句带你学习doris_表索引

1、doris建表概述 1.1、doris建表模板 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [DATABASE.]table_name (column_definition1[,column_deinition2,......][,index_definition1,[,index_definition2,]] ) [ENGINE [olap|mysql|broker|hive]] [key_desc] [COMMENT "tabl…

不花一分钱,四大方法教你免费申请SSL证书

在数字化时代,数据安全与隐私保护的重要性日益凸显。为了确保在线信息传输的机密性和完整性,数字证书,尤其是SSL/TLS证书扮演着至关重要的角色。为个人及企业用户提供了经济、高效的加密解决方案。随着市场对SSL证书的逐渐重视,免…

Mybatis-plus自定义BaseMapper文件

Mybatis-plus自定义BaseMapper文件 这里主要是介绍通过MyBatis-Plus使用自定义继承 baseMapper 扩展指定返回VO类型等,方便以后查阅!!! 自定义CustomBaseMapper文件 package com.wl.cloud.core.mybatis;import cn.hutool.core.be…

docker run启动一个开发备忘清单速查表 —— 筑梦之路

docker run -itd --name reference -p 3000:3000 registry.cn-beijing.aliyuncs.com/deanmr/reference:latest包含:运维,前端,后端,工具,命令,数据库 部分截图展示:

【Bugku】sqli-0x1

1.打开靶场,进入实验场景 2.按F12查看源代码,发现有一个/?pls_help路径,在url后加上查看。 3.得到的php源码 首先,代码通过 error_reporting(0) 和 error_log(0) 关闭了错误报告,这可以防止攻击者从错误信息中获取敏…

SpringBoot实用开发(十四)-- 消息(Message)的简单认识

目录 1.消息的概念 2.Java处理消息的标准规范 3.JMS 4.AMQP 5.MQTT 1.消息的概念 广义角度来说,消息其实就是信息,但是和信息又有所不同。信息通常被定义为一组数据,而消息除了具有数据的特征之外,还有

数据结构-加解密算法

引言 加解密算法是信息安全领域的重要组成部分,它们用于保护数据的机密性、完整性和可用性。 对称加密算法 对称加密算法使用相同的密钥进行加密和解密。 特性: 加密和解密速度快,适合处理大量数据。 优点: 效率高&#xf…

设计模式之大话西游

8年前深究设计模式,现如今再次回锅~ 还是大话设计模式 这本书还是可以的 大话西游经典的台词:“曾经有一份真挚的爱情摆在我面前,我没有珍惜,等我失去的时候,我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会…

【每周精选资讯 | 第 5 期】2024-04-08 ~ 2024-04-14

文章目录 前言内容百度智能云发布干帆大模型一体机,加速企业私有化部署大模型北大开源 aiXcoder-7B 代码大模型,专为企业私有部署设计WPS AI 企业版发布:多个大模型自由切换英特尔发布 AI 芯片 Gaudi 3,称性能超越英伟达 H100马云…

国外站群服务器有哪几种?

国外站群服务器种类繁多,它们各具特色,适用于不同的业务需求和场景。以下将为您科普几种常见的国外站群服务器及其特点。 首先,美国站群服务器以其丰富的IP资源和强大的网络技术著称。作为全球网络技术和数据中心发展的领先者,美国…

leetcode705-Design HashSet

题目 不使用任何内建的哈希表库设计一个哈希集合(HashSet)。 实现 MyHashSet 类: void add(key) 向哈希集合中插入值 key 。 bool contains(key) 返回哈希集合中是否存在这个值 key 。 void remove(key) 将给定值 key 从哈希集合中删除。如果…

LlamaIndex 文档3

文章目录 一、使用 LLamaIndex 构建全栈 Web 应用程序的指南1、Flask 后端基本 Flask - 处理用户索引查询Advanced Flask - 处理用户文档上传 2、React 前端获取文档.tsx查询索引.tsx插入文档.tsx所有其他前端优点 3、结论 二、使用 Delphic 构建全栈 LlamaIndex Web 应用程序的…

数据库SQL语言实战(二)

目录 检索查询 题目一 题目二 题目三 题目四 题目五 题目六 题目七 题目八 题目九(本篇最难的题目) 分析 实现(两种方式) 模板 总结 检索查询 按照要求查找数据库中的数据 题目一 找出没有选修任何课程的学…

redis 存放 redis 不同list集合 不同对象取值 list集合

redis 存放 redis 不同list集合 不同对象取值 list集合 测试代码 List<User> userList new ArrayList<>();userList ArrayListConstants.getUserSql;//查询 list 集合数据RedisTemplateUtil.setRedisList("keyredis", userList);//set 集合数据RedisTem…

Redis 模糊key查询

Redis 提供了两种主要的方式来执行模糊查询Key的操作&#xff1a; 方法1&#xff1a;KEYS 命令 1KEYS pattern KEYS 命令允许你按照给定的模式来查找数据库中的所有匹配项。例如&#xff1a; 1redis> KEYS user* 这条命令会返回所有以 "user" 开头的key。 然…

YesPMP众包平台 | 活动有礼,现金奖励点击领取!

YesPMP众包平台在线发福利啦&#xff0c;4月16日活动火热开启&#xff0c;现金奖励等你来领&#xff0c;最高可领千元&#xff0c;赶快参与将奖励收入囊中&#xff0c;一起来了解活动细节吧&#xff01; 一、活动内容&#xff1a; 活动一&#xff1a;【项目征集令】活动&…

Python Flask-Security- 构建安全而强大的Web应用

Flask-Security是一个基于Flask的安全扩展&#xff0c;为开发者提供了构建安全且强大的Web应用的工具。本文将深入探讨Flask- Security的核心功能、基本用法以及在实际应用中的一些高级特性&#xff0c;通过丰富的示例代码&#xff0c;助您更全面地了解和应用这一用于Web应用安…

2024年【危险化学品经营单位主要负责人】考试题库及危险化学品经营单位主要负责人新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位主要负责人考试题库是安全生产模拟考试一点通总题库中生成的一套危险化学品经营单位主要负责人新版试题&#xff0c;安全生产模拟考试一点通上危险化学品经营单位主要负责人作业手机同步练习。2024…