请大家帮忙看看,到底是哪错了? 我觉得你不应该在客户端dos.write(buffer, 0, i);后马上关闭连接,这样的话,有可能服务器端还没有收完数据,连接就中断了,因此产生异常。客户端可以连续发送数据,在没有数据后,在关闭连接。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多谢,原先问题已解决,代码如下:package testserver;import java.net.*;import java.io.*;public class testclient { public static void main(String[] args) throws IOException{ Socket asocket = null; int i; DataOutputStream dos = null; byte[] buffer; while(true){ asocket = new Socket("127.0.0.1", 6666); dos = new DataOutputStream(asocket.getOutputStream()); buffer = new byte[512]; i = System.in.read(buffer); dos.write(buffer, 0, i); System.out.println(i); dos.close(); asocket.close(); } }}package testserver;import java.io.*;import java.net.*;public class testserver2 implements Runnable{ Socket asocket = null; public testserver2(Socket asocket) { this.asocket = asocket; } public void run() { DataInputStream dis = null; try { dis = new DataInputStream(asocket.getInputStream()); int read; byte[] buffer; do { buffer = new byte[512]; read = dis.read(buffer); if(read==-1) break; String s = new String(buffer,0,read); System.out.println(s); } while (read != -1); dis.close(); asocket.close(); }catch (IOException e) {System.out.println("server error"+e);} } public static void main(String[] args) throws IOException{ ServerSocket aserver = new ServerSocket(6666); while(true){ Thread t1 = new Thread(new testserver2(aserver.accept())); t1.start(); } }}不过现在又有一个问题,注意看client端的一行语句: System.out.println(i);这个i是要发的长度。当我发送一个字符时,他显示的长度是3。他每次显示的长度总是 实际字符数+2。 这是为什么?还请各位高人再一次帮忙 在一个页面中按JButton生成JTable "^"的含义? 求一JAVA应用程序! applet能创建窗口吗? java中怎么判断一个没有后缀名的文件是否是图片? 请问swing问题? IO的问题,请高手帮忙看看!非常感谢! 一个有趣的问题,请大家看一个小程序,来者有分。 APPLET访问本地资源(不数字签名) 如何载unix下安装jdk? 关于applet中显示swing的问题 【推荐】新版的张孝祥IT课堂java视频
package testserver;
import java.net.*;
import java.io.*;public class testclient {
public static void main(String[] args) throws IOException{
Socket asocket = null;
int i;
DataOutputStream dos = null;
byte[] buffer;
while(true){
asocket = new Socket("127.0.0.1", 6666);
dos = new DataOutputStream(asocket.getOutputStream());
buffer = new byte[512];
i = System.in.read(buffer);
dos.write(buffer, 0, i);
System.out.println(i);
dos.close();
asocket.close();
}
}
}
package testserver;
import java.io.*;
import java.net.*;public class testserver2 implements Runnable{
Socket asocket = null;
public testserver2(Socket asocket)
{ this.asocket = asocket;
}
public void run() {
DataInputStream dis = null;
try {
dis = new DataInputStream(asocket.getInputStream());
int read;
byte[] buffer;
do {
buffer = new byte[512];
read = dis.read(buffer);
if(read==-1) break;
String s = new String(buffer,0,read);
System.out.println(s);
}
while (read != -1);
dis.close();
asocket.close();
}catch (IOException e) {System.out.println("server error"+e);}
} public static void main(String[] args) throws IOException{
ServerSocket aserver = new ServerSocket(6666);
while(true){
Thread t1 = new Thread(new testserver2(aserver.accept()));
t1.start();
}
}
}不过现在又有一个问题,注意看client端的一行语句: System.out.println(i);
这个i是要发的长度。当我发送一个字符时,他显示的长度是3。
他每次显示的长度总是 实际字符数+2。 这是为什么?还请各位高人再一次帮忙