//客户端部分
package testSix;import java.awt.Graphics;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Iterator;import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;class MyPanel extends JPanel{private ImageIcon ii;public MyPanel(ImageIcon ii){this.ii = ii;}protected void paintComponent(Graphics g) {super.paintComponent(g);g.drawImage(ii.getImage(), 0, 0, 300, 400, this);}
}public class SocketDemo extends JFrame{private Socket st = null;public SocketDemo(){try{try{//建立客户端st =  new Socket(InetAddress.getLocalHost(), 10000);//返回套接字具有关联的通道的输出流,则得到的输出流会将其所有操作委托给通道OutputStream os = st.getOutputStream();byte[] bt = "哥们儿, 给我来一张背景图片!".getBytes();os.write(bt);//返回套接字具有关联的通道输入流,则得到的输入流会将其所有操作委托给通道InputStream is = st.getInputStream();int len = is.read(bt);System.out.println(new String(bt, 0, len));//将输入流按照下面方式处理, 根据Iterator<ImageReader> itImage是否能//成功的返回一个ImageReader对象确认该流文件是否是一个图片文件!//并ImageReader类中的getFormatName()得到文件的格式!//通过最后可以通过ImageIcon的byte[]构造函数建立ImageIcon对象!//最后将图片显示在面板上!ImageInputStream iis = ImageIO.createImageInputStream(is);Iterator<ImageReader> itImage = ImageIO.getImageReaders(iis);if(itImage.hasNext()){ImageReader reader = itImage.next();byte[] imageByte = new byte[102400*10];iis.read(imageByte);ImageIcon ii = new ImageIcon(imageByte, reader.getFormatName());add(new MyPanel(ii));}}finally{st.close();}}catch(IOException e){e.printStackTrace();}setSize(300, 400);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args){new SocketDemo();}
}

//服务端部分
package testSix;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class ServerSocketDemo{private ServerSocket sst = null;private Socket st = null;public ServerSocketDemo(){try{try {//建立服务端sst = new ServerSocket(10000);//侦听并接受到此服务套接字的连接。此方法在进行连接之前一直阻塞。 创建新套接字 st = sst.accept();//得到客户端传输过来的流InputStream is = st.getInputStream();byte[] bt = new byte[1024];int len = is.read(bt);System.out.println(new String(bt, 0, len));OutputStream os  = st.getOutputStream();os.write("好了,知道了!".getBytes());//将图片文件传输过去FileInputStream fis = new FileInputStream(new File("q12.jpg"));while((len = fis.read(bt)) != -1){//先将流文件变成byte[], 然后利用套接字的输出流发送给客户端
                         os.write(bt);os.flush();}}finally{st.close();sst.close();}}catch(IOException e){e.printStackTrace();}}public static void main(String[] args){new ServerSocketDemo();}
}

转载于:https://www.cnblogs.com/hujunzheng/p/3980686.html

java中图片文件的传输及显示(Socket以及ServerSocket演示)相关推荐

  1. php中图片文件上传,显示缩略图

    php中图片文件上传,显示缩略图 htm代码块: <meta charset="utf-8" /> <style>img {max-width: 100px ...

  2. 如何在Java中对文件进行模式匹配和显示相邻行

    最近,我们在jOOλ0.9.9中发布了有关超棒的窗口函数支持的文章 ,我相信这是对我们所做的库的最佳补充. 今天,我们将在一个用例中研究窗口函数的出色应用,该用例受到以下堆栈溢出问题Sean Nguy ...

  3. java中图片文件的判断

    javax.imageio 类 ImageIO BufferedImage bi = ImageIO.read(resFile);//resFile --- InputStreamif(bi == n ...

  4. 服务器测试文件怎么创建,如何创建一个“FTPS”模拟服务器以单元测试Java中的文件传输...

    我有一个创建FTPS连接的CreateFTPConnection类.使用此连接传输文件.这里是TransferFile类的代码如何创建一个"FTPS"模拟服务器以单元测试Java中 ...

  5. java中打开文件显示_从java程序中打开任何文件

    在 java中打开文件似乎有点棘手 – 对于.txt文件,必须将File对象与Scanner或BufferedReader对象结合使用 – 对于图像IO,必须使用 ImageIcon类 – 如果要打开 ...

  6. java中各种文件的相互转化

    java中各种文件的相互转化 前几天一直在进行rtf文件流转化为HTML,折腾了好久,文件的格式转化都无法成功.后来找到了一个新的包(aspose),总算解了我的燃眉之急.现在记录分享一下. 1.使用 ...

  7. java中图片和字节数组相互转化

    java中图片和字节数组相互转化 方案一:使用ImageIO来实现 将图片转化为字节数组 /*** 通过图片路径将图片文件转化为字符数组* * @param url 图片路径* @return byt ...

  8. 在Java中确定文件类型

    以编程方式确定文件的类型可能非常棘手,并且已经提出并实现了许多基于内容的文件标识方法. Java中有几种可用于检测文件类型的实现,其中大多数很大程度上或完全基于文件的扩展名. 这篇文章介绍了Java中 ...

  9. java文件中获取创建日期_如何在Java中获取文件的上次修改日期

    java文件中获取创建日期 Sometimes we need to get the file last modified date in Java, usually for listeners li ...

最新文章

  1. DOS下导入导出MySQL备份
  2. 干货,别再浪费时间到处找了,各大面试题和答案都在这里
  3. TCP/IP学习笔记(五)TCP的保活定时器
  4. router-link
  5. 软考网络工程师学习笔记1-计算机网络概念
  6. C#/java 求最大公约数和最小公倍数
  7. fgo7.27服务器维护,【公告】更新游戏数据资料(7/27 实施)
  8. python class类的self_Python类class参数self原理解析
  9. HTML实现点击时的阴影(:active)(已解决iOS微信上无法使用)
  10. Linux内核与文件系统分析
  11. 大数据技能练习之爬虫
  12. wps制作可以打钩或取消打钩的正方框
  13. 最新kali之medusa
  14. How to reassign lifecycle in Windchill
  15. 服务器资源下载简单实现
  16. 【文档留存】泛微OA POC
  17. 【DeeplabV3+ get_miou_png】DeeplabV3+获取数据集预测结果灰度图
  18. 基于MPLAB X IDE配置位设置讲解
  19. 第一天:Hbase 概述
  20. sql要学mysql还是php,MySQL_与MSSQL对比学习MYSQL的心得(一)--基本语法,这一期主要是学习MYSQL的基本 - phpStudy...

热门文章

  1. 在java中使用quartz_如何在Java中使用Quartz Scheduler框架运行cron作业?
  2. 查看python版本命令
  3. Microsoft Windows Server 2019 1809 iso镜像 企业版本
  4. 可视化流程设计器 Activiti Designer
  5. java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä'
  6. 在新项目中使用 Vue3 使用总结
  7. 华为鸿蒙宣传悟空视频_华为自研鸿蒙系统定档9月?《悟空》微电影透露玄机...
  8. C/C++ putchar函数 - C语言零基础入门教程
  9. 计算机网络实验报告访问控制列表,电子政务《计算机网络实验》期末报告 07-访问控制列表实验报告.doc...
  10. 如何备份数据_如何通过归档、备份和灾难恢复实现多云数据保护