是这样的 我的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:网络居然不通了??!!
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:网络居然不通了??!!
防火墙也没有打开 杀毒也杀过
发现过BL.exe病毒 杀完后 执行程序和原来一样 还是不行 !!???
我是知道出错后网不通了 但是不知道 是在os.write()之后网不通的 还是因为网不通了
os.write()才报 socket write error的呢??
Server运行正常 只是其中相应的线程 一直在read() 死掉了(程序不太完善)
别的网点发送都正常 就有一个网点的client 有这种问题
此网点的client设备与别的不一样 也就是说是新型号的电脑
client端程序都一样呀 而且JAVA的兼容性确实很强 之前更换设备就没出过这情况
另外:不是因为Socket 连接还没有关闭 才报socket write error
描述运行环境之前最好先让读者看到这个程序可能会出现问题的地方(如果你自己不能确认的话 则贴下代码比较好些)这类问题自己调试的方式是 可以先拿一个能跑的通的例子与自己基于某个业务开发的功能做比较 如果实在看不出什么区别 再拿出来提问
下面发一些代码 这些代码并不是我开发的 却是我修改的 当时的发帖者因为找不出原因至少贴了的代码
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();
}
}
}
}
}
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();
}
}
一种:
1.双击电脑桌面右下角那两个小电脑的图标,选“属性”,再点“配置”-“高级;
2.找到“Media Type”,,通过右边的下拉菜单选择速度即可。
二种:
1.右击“我的电脑”--“属性”--“硬件”--“设备管理器”;
2.在“设备管理器”找到“网络适配器”选项,点击“+”号,右键点击您的网卡,在网卡属性对话框中点击“高级”--“Link Speed/Duplex Mode”,下拉菜单中选择网卡速度。注:网卡是“Media Type” 或 “Link Speed/Duplex Mode” 或其它,视具体情况而定。