TCP/IP Socket发送接收图片demo
一个实例通过client端和server端通讯
客户端通过TCP/IP传输资源文件,比如图片,文字,音频,视频等.....
服务端接受到文件存入本地磁盘,返回接受到:“收到来自于"+s.getInetAddress().getHostName()+"的信息”
- package com.ykw.net;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.InetAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- import org.junit.Test;
- //TCP编程例三:从客户端发送文件给服务端,服务端保存到本地。并返回"发送成功"给客户端。并关闭相应的连接
- public class TestTCP3 {
- @Test
- public void client()throws Exception{
- //1.创建Socket的对象
- Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9898);
- //2.从本地获取一个文件发送给服务端
- OutputStream os = socket.getOutputStream();
- FileInputStream fis = new FileInputStream(new File("1.jpg"));
- byte[] b = new byte[1024];
- int len;
- while((len=fis.read(b))!=-1){
- os.write(b,0,len);
- }
- socket.shutdownOutput();
- //3.接受来自于服务端的信息
- InputStream is = socket.getInputStream();
- byte[] b1 = new byte[1024];
- int len1;
- while((len1 = is.read(b1))!=-1){
- String str = new String(b1,0,len1);
- System.out.println(str);
- }
- //4.关闭相应的流和Socket对象
- is.close();
- os.close();
- fis.close();
- socket.close();
- }
- @Test
- public void server()throws Exception{
- //1.创建一个ServerSocket对象
- ServerSocket ss = new ServerSocket(9898);
- //2.调用其accept()方法,返回一个Socket对象
- Socket s = ss.accept();
- //3.将从客户端发送过来的信息保存到本地
- InputStream is = s.getInputStream();
- FileOutputStream fos = new FileOutputStream(new File("D://5.jpg"));
- byte[] b = new byte[1024];
- int len;
- while((len = is.read(b))!=-1){
- fos.write(b,0,len);
- }
- System.out.println("收到来自于"+s.getInetAddress().getHostAddress()+"的文件");
- //4.发送“接收成功”的信息反馈给客户端
- OutputStream os = s.getOutputStream();
- os.write("您发送的图片我已接收成功".getBytes());
- //5.关闭相应的流和Socket及ServerSocket的对象
- os.close();
- fos.close();
- is.close();
- s.close();
- ss.close();
- }
- }
TCP/IP Socket发送接收图片demo的更多相关文章
- Android TCP/IP Socket Test
TCP/IP协议:Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本 ...
- Qt5 基于TCP传输的发送/接收文件服务器(支持多客户端)
一.实现功能 1.服务器端选择待发送的文件,可以是多个 2.开启服务器,支持多客户端接入,能够实时显示每个客户端接入状态 3.等待所有客户端都处于已连接状态时,依次发送文件集给每个客户端,显示每个客户 ...
- mysql错误:Can’t create TCP/IP socket (10106) 解决方法
错误描述 “mysql错误:Can’t create TCP/IP socket (10106)”,目测是socket端口被占用的原因,然后在打开tomcat,报的错误中也包含了“socket”,再一 ...
- 【Java TCP/IP Socket】TCP Socket(含代码)
TCP的Java支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议.TCP协议和UDP协议.现 ...
- Linux IPC tcp/ip socket 编程
模型 #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include < ...
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 【Java TCP/IP Socket】应用程序协议中消息的成帧与解析(含代码)
程序间达成的某种包含了信息交换的形式和意义的共识称为协议,用来实现特定应用程序的协议叫做应用程序协议.大部分应用程序协议是根据由字段序列组成的离散信息定义的,其中每个字段中都包含了一段以位序列编码(即 ...
- 一个项目看java TCP/IP Socket编程
前一段时间刚做了个java程序和网络上多台机器的c程序通讯的项目,遵循的是TCP/IP协议,用到了java的Socket编程.网络通讯是java的强项,用TCP/IP协议可以方便的和网络上的其他程序互 ...
- TCP IP SOCKET 笔记
网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...
随机推荐
- “全栈2019”Java第九十三章:内部类应用场景(迭代器设计模式)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 关于字典的几个类--defaultdict,OrderedDict, zip()
一. 1个键对应多个值 比如:d = {'a' : [1, 2, 3], 'b' : [4, 5]},可以使用 collections 模块中的 defaultdict 来构造这样的字典 from ...
- C语言多线程编程一
1. Windows下同时打开多个对话框: #include <Windows.h> #include <process.h> //创建线程 void runmsg(void ...
- http协议缓存小结
缓存可以使用expire方式,设置到期时间,缓存的时间等于expire设置的时间减去当前的时间 也可以使用no-cache的方式进行缓存,当设置了no-cache的方式时,以no-cache的为准,e ...
- leetcode-79-单词搜索(用dfs解决)
题目描述: 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许 ...
- h5 页面点击添加添加input框
h5 页面点击添加添加input框 前段时间有个需求,页面要能点击添加按钮控制input框的个数,当时感觉有点难,就没做,这两个又遇到了,没办法写了个简单的 效果图,加号增加,减号减少 直接上代码, ...
- elasticsearch 基础笔记
基础: 1.查看 所有节点,及版本 http://192.168.18.7:9200/_nodes/_all/version?pretty=true
- 并发编程>>并发级别(二)
理解并发 这是我在开发者头条看到的.@编程原理林振华 有目标的提升自己会事半功倍,前行的道路并不孤独. 1.阻塞 当一个线程进入临界区(公共资源区)后,其他线程必须在临界区外等待,待进去的线程执行完成 ...
- 题解 p2017 [USACO09DEC]晕牛Dizzy Cows
前言:P大终于又更新了 正文 转送门 由于当时我这个ZZ不知怎么了,这份题解排版可能有些尴尬,建议大家读完题后,看我主程序前的代码的注释,然后看最下面的图片,然后看第一张图片,对不起,望多谅解 以样例 ...
- Compile git version inside go binary
Compile git version inside go binary Abstract 在我们编写的程序中总是希望可以直接查阅程序的版本,通过--version参数就会输出如下版本信息. Buil ...