`
ynp
  • 浏览: 438284 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java.net.SocketException: Connection reset 问题解决方法

阅读更多
java.net.SocketException: Connection reset 问题解决方法
客户端用长连接进行连接,也就是写个死循环,while ture;用
while((temp = inputStream.read(buffer)) != -1){
System.out.println(new String(buffer,0,temp));
}
会报java.net.SocketException: Connection reset 异常

----------》服务端

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {

    public static void main(String[] args) {
    	new ServerThread().start();
	}
}

	class ServerThread extends Thread{
		public void run(){
			//声明一个ServerSocket对象
			ServerSocket serverSocket = null;
			try {
				//创建一个ServerSocket对象,并让这个Socket在4567端口监听
				serverSocket = new ServerSocket(4568);
				byte buffer [] = new byte[1024*4];
				int temp = 0;
				//从InputStream当中读取客户端所发送的数据
				while(true){
					//调用ServerSocket的accept()方法,接受客户端所发送的请求
					Socket socket = serverSocket.accept();
					//从Socket当中得到InputStream对象
					InputStream inputStream = socket.getInputStream();
					temp = inputStream.read(buffer);
					System.out.println(new String(buffer,0,temp));
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			finally{
				try {
					serverSocket.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		}
		/*    	public void run(){
	    		try {
	    			//创建一个DatagramSocket对象,并指定监听的端口号
					DatagramSocket socket = new DatagramSocket(4567);
					byte data [] = new byte[1024];
					//创建一个空的DatagramPacket对象
					DatagramPacket packet = new DatagramPacket(data,data.length);
					//使用receive方法接收客户端所发送的数据
					socket.receive(packet);
					String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
					System.out.println("result--->" + result);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	    	}*/
}


-----------》客户端
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;

public class TCPClient {
	public static void main(String[] args) {
		try {
			//创建一个Socket对象,指定服务器端的IP地址和端口号
			Socket socket = new Socket("192.168.1.103",4568);
			//使用InputStream读取硬盘上的文件
			InputStream inputStream = new FileInputStream("C://Documents and Settings/Administrator/桌面/临时备份/fileTest/1.txt");
			//从Socket当中得到OutputStream
			OutputStream outputStream = socket.getOutputStream();
			byte buffer [] = new byte[4*1024];
			int temp = 0 ;
			//将InputStream当中的数据取出,并写入到OutputStream当中
			while((temp = inputStream.read(buffer)) != -1){
				outputStream.write(buffer, 0, temp);
			}
			outputStream.flush();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
分享到:
评论
1 楼 akka_li 2016-07-11  
没看懂啥意思!什么原因导致java.net.SocketException: Connection reset???
而你这个解决方法,要点在哪?

相关推荐

    java.net.SocketException Connection reset 解决方法

    "java.net.SocketException Connection reset 解决方法" 在 Java 编程中,SocketException 是一种常见的异常,特别是在网络编程中。Conexion reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器...

    java.net.SocketException: Connection reset 解决方法

    Java中的`java.net.SocketException: Connection reset`是一个常见的网络编程错误,通常表示在TCP/IP通信过程中,连接突然中断。这个异常可能在客户端或服务器端发生,通常与数据传输的异常中断有关。 首先,我们来...

    connection reset解决方案(亲测可用).md

    connection reset解决方案(亲测可用).md

    Java Socket常见异常处理

    4. **java.net.SocketException: (Connection reset 或 Connect reset by peer: Socket write error)** 这两种异常都表示连接已断开。可能的原因是一端关闭了Socket,而另一端仍在尝试读写。处理这类异常需要检测到...

    Socket长连接异常处理

    java.net.SocketException: Connection reset by peer: Socket write error 该异常可能发生在客户端和服务器端,原因是因为一端的 Socket 被关闭,而另一端继续发送数据。解决方法是确保在关闭连接前完成所有的数据...

    java中的connection reset 异常处理分析

    为了调试和分析"connection reset"问题,开发者可以使用以下方法: 1. 使用网络调试工具(如Wireshark)来捕获和分析网络包,查看连接关闭的具体过程。 2. 在Java代码中添加异常处理逻辑,记录详细的错误信息,包括...

    javaerror处理资料

    java.net.SocketException: Connection reset by peer: Socket write error 此异常通常出现在客户端尝试向服务器写入数据时突然断开连接的情况。这种现象的原因可能是远程服务器突然关闭了连接,或者客户端发送的...

    Google I/O 2013推荐Android 网络通信框架Volley

    1. 初始化RequestQueue:在Application或Activity的onCreate方法中创建RequestQueue实例。 ```java RequestQueue queue = Volley.newRequestQueue(this); ``` 2. 创建Request对象:根据实际需求创建对应的Request...

    ssh2必须的包(这是第二部分)

    4. **mysql-connector-java-5.1.10-bin.jar** - MySQL数据库的Java驱动,用于连接Java应用程序与MySQL数据库。在SSH2场景中,可能用于存储和检索用户认证信息或其他系统配置数据。 5. **javassist-3.12.0.GA.jar** ...

    java的常见问题及解决方法定义.pdf

    出现“java.net.SocketException: Connection reset”错误通常表示远程服务器关闭了连接。这可能在读取或写入数据时发生。检查服务器状态,确保网络连接稳定,同时在代码中处理异常,优雅地处理这种情况。 在开发...

    java的常见问题及解决方法参照.pdf

    遇到"java.net.SocketException: Connection reset"错误,通常是因为服务器端关闭了连接。这可能发生在读取或写入数据时。解决这个问题通常需要检查服务器端代码,确保其不会在数据传输期间意外关闭连接。 这些是...

    Nebula 异常情况记录1

    在处理Graph500数据集的K-hop neighbor(5/6度)查询时,TTransportException异常被触发,伴随有"java.net.SocketException: Connection reset"的错误信息。这通常意味着服务器主动关闭了连接,可能是由于资源耗尽、...

    java常见异常汇总

    `java.net.SocketException`: Connection reset **异常描述**:在使用 Socket 进行网络通信时,可能会遇到连接被远程主机关闭的情况。 **原因分析**:当远程主机突然关闭连接或者发生网络故障时,会抛出此类异常...

Global site tag (gtag.js) - Google Analytics