是这样的 我的client端程序如下(节选)
FileInputStream fis = new FileInputStream(fileName);
  int data;
  while ( -1 != ( data = fis.read( ) ) )
  {
  os.write( data );
  }   
    
  System.out.println( "send file success!!" );
    
在client端设备上执行后 只从文件发送了一个字节 发送到server端后,程序便出错退出了(server收到了此字节)
出错在: os.write( data ); 这一行  好象是超时后报错 
printStackTrace()错误提示如下 :
java.net:SocketException: connection reset by peer :socket write error
......................
......................奇怪的是 :
  程序退出后 网络居然不通了??!! 需要拔下网线 再插上网线等一会网络才能ping通 真郁闷呀!!!各位前辈 多指教 谁遇到过这种问题   
主要两个问题
1:程序怎么会执行不下去 只发了一个字节就connection reset by peer :socket write error中断??
2:网络居然不通了??!!

解决方案 »

  1.   

    我把网线换了 交换机端口也换了 程序循环内 也加了 os.flush();
    防火墙也没有打开 杀毒也杀过 
    发现过BL.exe病毒 杀完后 执行程序和原来一样 还是不行 !!???
    我是知道出错后网不通了 但是不知道 是在os.write()之后网不通的 还是因为网不通了 
    os.write()才报 socket write error的呢??
      

  2.   

    client程序、server程序都运行在一台机吗,server程序呢?程序异常中止,会引发古怪问题的。
      

  3.   

    Client与Server不在一台机器上 
    Server运行正常 只是其中相应的线程 一直在read() 死掉了(程序不太完善)
      

  4.   

    实在是找不出原因 server在我的机器上运行 client分布在各网点 我负责接收 client发送的文件
    别的网点发送都正常  就有一个网点的client 有这种问题 
    此网点的client设备与别的不一样 也就是说是新型号的电脑 
    client端程序都一样呀  而且JAVA的兼容性确实很强 之前更换设备就没出过这情况
      

  5.   

    因为你 Client 程序退出了,但是 Socket 连接还没有关闭,导致服务端就会报出这个错误。你试着在客户端把 Socket 连接关闭一下。
      

  6.   

    7楼说得好象不是那回事 不是server端报错 而是client
     另外:不是因为Socket 连接还没有关闭 才报socket write error
      

  7.   

    异常很常见 但是不是说一个异常对应一个问题(或者说是对应一个问题 但是这个问题的发生原因有很多)
    描述运行环境之前最好先让读者看到这个程序可能会出现问题的地方(如果你自己不能确认的话 则贴下代码比较好些)这类问题自己调试的方式是 可以先拿一个能跑的通的例子与自己基于某个业务开发的功能做比较 如果实在看不出什么区别 再拿出来提问
    下面发一些代码 这些代码并不是我开发的 却是我修改的 当时的发帖者因为找不出原因至少贴了的代码
    package net.test;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;public class ServerTester implements Runnable { @Override
    public void run() {
    ServerSocket server = null;
    try {
    server = new ServerSocket(5000);

    BufferedReader in = null;
    BufferedWriter out = null;
    while (true) {
    Socket socket = server.accept();

    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

    while (true) {
    out.write("hello to client\r\n");
    out.write("i am server\r\n");
    out.write("bye\r\n");
    out.flush();
    if (in.readLine().trim().equals("exit")) {
    break;
    }
    }
    socket.close();
    System.err.println("第一次请求结束...按照你这个代码同时只能接受一个请求...");
    }
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (server != null) {
    try {
    server.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }
      

  8.   


    package net.test;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;public class SocketTester implements Runnable { @Override
    public void run() {
    Socket socket = null; BufferedReader in = null;
    BufferedWriter out = null;
    try {
    socket = new Socket("localhost", 5000); in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String line = null;
    while ((line = in.readLine()) != null) {
    if (line.trim().equals("bye")) {
    break;
    } else {
    System.out.println(line);
    }
    }
    out.write("exit\r\n");
    out.flush();
    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (socket != null) {
    try {
    socket.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }package net.test;public class Main {
    public static void main(String[] args){
    new Thread(new ServerTester()).start();
    new Thread(new SocketTester()).start();
    }
    }
      

  9.   

    有两种方法,大致如下:
    一种:
    1.双击电脑桌面右下角那两个小电脑的图标,选“属性”,再点“配置”-“高级;
    2.找到“Media Type”,,通过右边的下拉菜单选择速度即可。
    二种:
    1.右击“我的电脑”--“属性”--“硬件”--“设备管理器”;
    2.在“设备管理器”找到“网络适配器”选项,点击“+”号,右键点击您的网卡,在网卡属性对话框中点击“高级”--“Link Speed/Duplex Mode”,下拉菜单中选择网卡速度。注:网卡是“Media Type” 或 “Link Speed/Duplex Mode” 或其它,视具体情况而定。