- 浏览: 531684 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (377)
- J2EE (61)
- ORACLE (36)
- JS (15)
- EXT (0)
- win7 (12)
- TOMCAT (10)
- game (1)
- ie (5)
- etc (8)
- ibatis (3)
- ORACLE 客户端 (1)
- bat (3)
- 健康 (127)
- baby (4)
- html (12)
- myeclipse (16)
- 射手 字幕默认下载 位置 (1)
- office (0)
- car (2)
- xxx (1)
- python简介 (1)
- FusionCharts (1)
- dorado (4)
- english (3)
- weblogic (3)
- request/servlet (3)
- wsdl (1)
- offie2010 visio2010 下载 (1)
- nexus5 (0)
- chrome (3)
- ssi (2)
- 安卓 (3)
- nexus ipad (1)
- mysql (4)
- json (3)
- struts (6)
- datagrid (1)
- highcharts (1)
- tools (2)
- tool (1)
- spring3 (1)
- jedit (1)
- java (4)
- windows (1)
- easyui (2)
- 液晶显示器色温 (1)
- mybatis (1)
- where (1)
- sublime (1)
- spring4 (3)
最新评论
-
spring_springmvc:
如何在java Web项目中开发WebService接口,地址 ...
java 调用WebService服务接口 -
chenzheng8975:
阅
人生三大陷阱 -
ygbb007:
直接OD就能破解的
myBase Desktop 6.0 破解方法 -
lanlansnss:
直接删除nyfedit.ini文件即可
myBase Desktop 6.0 破解方法 -
yunzhu:
LZ写博客不太注重排版啊,排版不行别人没法看的
PermGen space
Software caused connection abort: socket write error解决方法!
package ok;
import java.net.*;
import java.io.*;
public class Application1 {
public static void main(String args[]) {
try {
ServerSocket server = new ServerSocket(1991);
Socket soc = server.accept();
BufferedOutputStream output = new BufferedOutputStream(soc.
getOutputStream());
BufferedInputStream input = new BufferedInputStream(new
FileInputStream(new File(
"C:\\Documents and Settings\\Administrator\\My Documents\\1.bmp ")));
byte[] zijie=new byte[1024];
while(input.read(zijie)> 0)
{
output.write(zijie);
output.flush();
}
input.close();
output.close(); //把这个去掉就没错了
soc.close();
server.close();
} catch (Exception ex) {
System.out.println( "有错误发生了! " + ex.getMessage());
}
}
}
上面是我写的传图片的代码。 在运行的时候会报
Software caused connection abort: socket write error 这个错误?
可是如果把output.close();去掉后就不会有错了 事实上在我写的所有有关socket的代码中 只要把输出流一关 就会出错! 谁告诉我一下为什么?
------解决方法--------------------------------------------------------
我的客户端代码是:
/**
*
*/
package ok;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* @author arkwrightzhn
*
*/
public class Application2 {
/**
* @param args
*/
public static void main(String[] args) {
Socket socket=null;
InputStream is=null;
FileOutputStream fos=null;
try {
socket=new Socket( "localhost ",1991);
is=socket.getInputStream();
fos=new FileOutputStream( "C:\\Documents and Settings\\Administrator\\My Documents\\2.bmp ");
byte[] bs=new byte[1024];
int len=0;
//int i=0;
while((len=is.read(bs))> 0){
//i++;
//System.out.println(i);
fos.write(bs,0,len);
fos.flush();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(fos!=null) fos.close();
if(is!=null) is.close();
if(socket!=null) socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
=============================
为此,我找遍了中英文的一些网站,搜遍了能找的每个角落,发现了出现这种状况的原理,该java异常在客户端和服务器端都有可能发生,引起该异常的原因有两个:
1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。
2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
package ok;
import java.net.*;
import java.io.*;
public class Application1 {
public static void main(String args[]) {
try {
ServerSocket server = new ServerSocket(1991);
Socket soc = server.accept();
BufferedOutputStream output = new BufferedOutputStream(soc.
getOutputStream());
BufferedInputStream input = new BufferedInputStream(new
FileInputStream(new File(
"C:\\Documents and Settings\\Administrator\\My Documents\\1.bmp ")));
byte[] zijie=new byte[1024];
while(input.read(zijie)> 0)
{
output.write(zijie);
output.flush();
}
input.close();
output.close(); //把这个去掉就没错了
soc.close();
server.close();
} catch (Exception ex) {
System.out.println( "有错误发生了! " + ex.getMessage());
}
}
}
上面是我写的传图片的代码。 在运行的时候会报
Software caused connection abort: socket write error 这个错误?
可是如果把output.close();去掉后就不会有错了 事实上在我写的所有有关socket的代码中 只要把输出流一关 就会出错! 谁告诉我一下为什么?
------解决方法--------------------------------------------------------
我的客户端代码是:
/**
*
*/
package ok;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* @author arkwrightzhn
*
*/
public class Application2 {
/**
* @param args
*/
public static void main(String[] args) {
Socket socket=null;
InputStream is=null;
FileOutputStream fos=null;
try {
socket=new Socket( "localhost ",1991);
is=socket.getInputStream();
fos=new FileOutputStream( "C:\\Documents and Settings\\Administrator\\My Documents\\2.bmp ");
byte[] bs=new byte[1024];
int len=0;
//int i=0;
while((len=is.read(bs))> 0){
//i++;
//System.out.println(i);
fos.write(bs,0,len);
fos.flush();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(fos!=null) fos.close();
if(is!=null) is.close();
if(socket!=null) socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
=============================
为此,我找遍了中英文的一些网站,搜遍了能找的每个角落,发现了出现这种状况的原理,该java异常在客户端和服务器端都有可能发生,引起该异常的原因有两个:
1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。
2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
评论
1 楼
zhouqinghao
2012-05-31
到目前为止,有解决方案吗?[size=x-large][/size][align=left][/align][color=red][/color]
发表评论
-
HttpClient4.X的代理密码
2018-07-11 23:48 868HttpClient4.X的代理添加实现(转自http://b ... -
Enable debug logging for this logger for a complete list of JARs that were scann
2018-06-28 21:59 1783修改EL表达式,例如"${owner.new}& ... -
job spring3--spring4
2017-12-28 09:21 452job spring3-->spring4 org ... -
java的(PO,VO,TO,BO,DAO,POJO)解释
2017-06-12 10:26 524java的(PO,VO,TO,BO,DAO,POJO) ... -
高內聚、低耦合。多聚合、少繼承
2017-05-22 15:52 788面向對象原則:高內聚、低耦合。多聚合、少繼承 2015-05 ... -
savesavesavesavesavesave
2017-05-18 17:24 484savesavesavesavesavesave uploa ... -
eclipse 图标的含义
2016-10-13 15:11 507... -
log4j-struts异常日志打印
2016-08-24 17:04 1057log4j.appender.myfile.layout.Co ... -
struts2 Action中获取request, response对象
2016-07-21 09:43 1166ajax不能完成文件下载, ... -
request和response的中文乱码问题
2016-03-04 10:39 1374request和response的中文乱码问题 request ... -
sun.misc.BASE64Encoder找不到jar包的解决方法
2015-06-29 15:10 840sun.misc.BASE64Encoder找不到jar包的解 ... -
jar 包 用途(jar功能对照表)
2015-04-08 16:07 1631jar包用途(jar功能对照表) axis.jar SOAP ... -
struts上传
2014-08-22 15:37 471jsp页面 <meta http-equiv=" ... -
java调用打印机打印自定义的图片
2014-08-19 16:03 3817package test; import java.awt. ... -
JAVA基类和派生类
2014-05-22 16:02 1292JAVA基类和派生类 从 ... -
web.xml配置详解
2014-02-20 08:56 8172007-10-16 17:12 Web.XML 配 ... -
不要使用sun.misc.BASE64Encoder
2014-02-18 10:10 1172一直以来Base64的加密解密都是使用sun.misc包下的B ... -
自定义Result
2014-01-13 10:18 746自定义Result 5.7.1 什么是自定义Result ... -
ant+javadoc生成API文档
2014-01-02 17:16 960ant+javadoc生成API文档 分类: ant 2006 ... -
ssi包下载
2013-12-27 10:15 964Spring官网改版后找了好 ...
相关推荐
FinalShell是一款功能强大的一体化Linux服务器管理工具,专为IT运维人员设计。它集成了SSH终端、文件管理器、数据库管理等多个实用功能,极大地提升了在Linux系统中的工作效率。下面将详细介绍FinalShell的主要特性...
**Modbus TCP客户端和服务器示例** 在工业自动化和物联网(IoT)领域,Modbus是一种广泛使用的通信协议,它允许设备之间进行简单的数据交换。本文将深入探讨Modbus TCP,这是一种在网络环境中运行的Modbus变体,尤其...
java.net.SocketException: Connection reset by peer: Socket write error 该异常可能发生在客户端和服务器端,原因是因为一端的 Socket 被关闭,而另一端继续发送数据。解决方法是确保在关闭连接前完成所有的数据...
java.net.SocketException: Connection reset by peer: Socket write error 此异常通常出现在客户端尝试向服务器写入数据时突然断开连接的情况。这种现象的原因可能是远程服务器突然关闭了连接,或者客户端发送的...
* Socket 编程:Socket 是一种网络编程的基本概念,它允许不同计算机之间的通信。在 Java 中,Socket 是一个类,它提供了创建连接、发送和接收数据的方法。 * SocketException:SocketException 是一种 Java 异常,...
【标题】:s7connector-master_s7connect连接示例项目_s7connector_birthday14r_ 这个项目名为“s7connector-master”,它是一个基于Java语言的S7connect连接示例程序,主要目的是为了演示如何与西门子PLC...
例如,使用`getsockopt()`获取SO_ERROR选项,或者在write之前进行零字节的read操作,检查是否已接收到EOF(文件结束)。 4. **非阻塞写操作**:将Socket设置为非阻塞模式,这样write操作在失败时会立即返回错误,而...
解决TestNG单元测试报错Software caused connection abort: socket write error
1. 使用 Oracle 数据库,大于 4k 的附件上传有问题,会报错 java.sql.SQLException: Connection reset by peer: socket write error。 解决办法是在插入 BLOB 字段值时,要先用 SELECT BLOBCOL FROM TABLENAME FOR ...
21:23:44,676 WARN StreamResult:45 - StreamResultX Warn : socket write error 如果出现该警告说明正确执行,该警告说明,Socket非正常中断,但是流确实已经关闭,自此再也不用看到上面出现的讨厌异常结果。 ...
根据提供的部分内容,“java.sql.SQLException: Already closed.”和“java.sql.SQLException: I/O exception: Connection reset by peer: socket write error”这类异常通常与数据库连接管理不当有关,如连接超时、...
4. **java.net.SocketException: (Connection reset 或 Connect reset by peer: Socket write error)** 这两种异常都表示连接已断开。可能的原因是一端关闭了Socket,而另一端仍在尝试读写。处理这类异常需要检测到...
3. "ERROR - Unable to connect to foreign data source- Can't create TCP-IP socket (24)_冰刀(skate)-CSDN博客.url":这可能是一个具体的案例,描述了在尝试连接外部数据源时遇到的TCP/IP套接字创建问题。...
socket.addEventListener(IOErrorEvent.IO_ERROR, onError); socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); } private function onConnect(event:Event):void { trace(...
可以使用`socket_last_error()`和`socket_strerror()`检查错误码和获取错误信息,或者使用`set_error_handler()`自定义错误处理函数。 5. **示例代码** 创建一个简单的PHP Socket Server: ```php $serverSocket...
- `socket_write()` 和 `socket_read()`:分别用于向Socket写入数据和读取数据。 - `socket_close()`:关闭Socket连接。 **四、源码示例** 下面是一个简单的PHP Socket服务器端示例: ```php $socket = socket_...
// socket_read while show errors when the client is disconnected, so silence the error messages $data = @ socket_read ( $read_sock , 1024 , PHP_NORMAL_READ ); // check if the client is ...
可以使用`socket_last_error()`获取错误代码,并用`socket_strerror()`获取错误信息。 7. **测试Socket接口**: 压缩包内的`socket_test.txt`文件很可能包含了具体的PHP脚本,用于测试Socket读写功能。这个脚本...
try socket.write(data, withTimeout: -1, tag: 0) } catch let error { print("发送数据失败: \(error.localizedDescription)") } } ``` 5. 断开连接:当不再需要连接时,调用`disconnect()`方法断开连接。 `...