socket传输图片用shutdownoutput()之后无法继续传输数据
socket传输图片用shutdownoutput()之后无法继续传输数据
前言
java的socket是一个全双工套接字,任何的输入流或输出流的close()都会造成Socket关闭。使用java服务器向客户端发送图片,需要使用socket.shutdownOutput()方法关闭套接字的输出流,使服务器知道输出流关闭,可以得到流末尾标志(-1)。同样,可以使用socket.shutdownInput()方法单独关闭套接字的输入流。
以此实现图片传输结束通知接收端传输完毕。
问题
但是,一旦使用对socket使用shutdownoutput()函数,此socket就无法再传输数据,没有办法使其恢复,除非关闭重新打开端口,但此方式复杂,也不利于维护。
解决方案
所以建议建立一个socket(用不同端口号)专门用来传输图片,传完shutdownoutput()之后直接关闭不再使用。
socket传输图片用shutdownoutput()之后无法继续传输数据的更多相关文章
- C++使用socket传输图片
Client: #include <WinSock2.h> #include <Windows.h> #include <stdio.h> #pragma comm ...
- 在Java中使用Socket模拟客户端和服务端(多线程)
1:Socket与ServerSocket的交互 2.Socket和ServerSocket介绍 Socket 构造函数 Socket() Socket(InetAddress address, in ...
- 转--webservice、socket、http 小记(一)
webservice.socket.http 小记(一) http://blog.csdn.net/m_123hj_520/article/details/9370723 2013-07-18 17: ...
- 网站建设底层知识Socket与Http解析
在进行网站建设的时候,常常遇到不同的协议,Socket和http协议都可以实现数据传输,但两种传输方式在网站建设中有什么各自的特点,和缺点,如何选择合适的传输方式. 1 数据传输方式 1.1 Soc ...
- Java Socket简例
Socket IO工具类: package com.test.util; import java.io.DataInputStream; import java.io.DataOutputStream ...
- Socket学习笔记
..........(此处略去万万字)学习中曲折的过程不介绍了,直接说结果 我的学习方法,问自己三个问题,学习过程将围绕这三个问题进行 what:socket是什么 why:为什么要使用socket ...
- [Python]再学 socket 之非阻塞 Server
再学 socket 之非阻塞 Server 本文是基于 python2.7 实现,运行于 Mac 系统下 本篇文章是上一篇初探 socket 的续集, 上一篇文章介绍了:如何建立起一个基本的 sock ...
- SOCKET,TCP/IP,UDP,HTTP,FTP总结
一.TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组(主要解决数据如何在网络中传输),可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议 ...
- 服务器和客户端的交互方式(Socket,http协议)和各自特点适用范围
1 数据传输方式 1.1 Socket传输的定义和其特点 所谓socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有UDP和TCP两个协议.S ...
随机推荐
- bzoj2134单选错位
bzoj2134单选错位 题意: 试卷上n道选择题,每道分别有ai个选项.某人全做对了,但第i道题的答案写在了第i+1道题的位置,第n道题答案写在第1题的位置.求期望能对几道.n≤10000000 题 ...
- 动手实现一个较为简单的MQTT服务端和客户端
项目地址:https://github.com/hnlyf168/DotNet.Framework 昨天晚上大致测试了下 ,490个客户端(一个收一个发) 平均估计每个每秒60个包 使用mqtt协 ...
- Windows 下Java JDK的下载与安装
前言: 因为本机已经配置完毕了,本次使用的是虚拟机中的Win7系统,Win10系统操作步骤基本完全一样,不同的地方会在下面的步骤中指出. 一.JDK的下载 为了计算机安全,我们首先要做到的就是尽量在官 ...
- INS(Instagram)如何绑定谷歌二次验证码/谷歌身份验证/双重认证?
1.打开Ins,找到双重验证界面 打开Ins,点击右上角“三”-“设置”-“安全”-“双重验证”-“选择安全验证方式”-“身份验证应用”-“立即开启”-“手动设置”-“复制密钥”-“输入验证码” ...
- 印象笔记如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?
一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 印象笔记如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载a ...
- vue学习 `${HH}-${mm}-${dd}` 按键修饰符
vue 有一种拼接字符串的规范写法 //键盘 Tab 键 上边的键 英文输入状态 然后采用类似EL表达式${变量}return `${}:${}:${}` //有时候我们经常在输入完密码之后,按回车E ...
- 使用ASP.NET实现定时计划任务,不依靠windows服务
我们怎样才能在服务器上使用asp.net定时执行任务而不需要安装windows service?我们经常需要运行一些维护性的任务或者像发送提醒邮件给用户这样的定时任务.这些仅仅通过使用Windows ...
- mysql 格式化保存
win -e 'SELECT * from t_share_template;' | sed 's/\t/,/g' > aa.csv
- 官宣!AWS Athena正式可查询Apache Hudi数据集
1. 引入 Apache Hudi是一个开源的增量数据处理框架,提供了行级insert.update.upsert.delete的细粒度处理能力(Upsert表示如果数据集中存在记录就更新:否则插入) ...
- Eureka服务发现Discovery
功能: 对于注册进Eureka里面的微服务,可以通过服务发现来获得该服务的信息 修改controller 主启动类加@EnableDiscoveryClient注解