求高手点拨一个Socket通信软件的有关问题解决方案
求高手点拨一个Socket通信软件的问题解决方案.
高手,您好:
我在做一个CS结构的Socket通信im系统,第一个作品,碰到了EOFException的问题..
经过几日的研究与求教,现在我得到了两个解决方案:
0.进行系统通信的“字节流”的传输方式的定义.
1.进行系统通信的“字符流”传输方式的readUTF()方法的重写.
现在,我希望得到高手的指导:
我的第二种方案,错在什么地方..
我做了一个实验:
S端的源代码:
为了解决readUTF()方法的EOFException的问题,我进行了S端的“Lib类”的书写:
Lib类的代码如下:
C端的代码如下:
可是,在我运行了S端的代码和C端的代码之后,我得到的console窗口的提示如下:

一个“不停循环动态报错的console窗口”...
求高手点拨:
这是怎么回事..
应该怎么修改...?
谢谢高手!!
一百分奉上!!
一位日日夜夜向着理想奔跑的筑梦者
高手,您好:
我在做一个CS结构的Socket通信im系统,第一个作品,碰到了EOFException的问题..
经过几日的研究与求教,现在我得到了两个解决方案:
0.进行系统通信的“字节流”的传输方式的定义.
1.进行系统通信的“字符流”传输方式的readUTF()方法的重写.
现在,我希望得到高手的指导:
我的第二种方案,错在什么地方..
我做了一个实验:
S端的源代码:
package s;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class S_port {
String str = "";
ServerSocket s =null;
Socket so = null;
S_port(){
try {
s = new ServerSocket(60000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
try {
so = s.accept();
break;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
str = Lib.readsocketUTF(so);
System.out.println(str);
}
public static void main(String[] args){
new S_port();
}
}
为了解决readUTF()方法的EOFException的问题,我进行了S端的“Lib类”的书写:
Lib类的代码如下:
package s;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.Socket;
public class Lib {
static String readsocketUTF(Socket s){
DataInputStream read = null;
try {
read = new DataInputStream(s.getInputStream());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String msg = "";
String info = "";
msg = info;
while(true){
try {
info = read.readUTF();
}catch(EOFException e){
break;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
msg = msg + info;
return msg;
}
}
C端的代码如下:
package s;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class C_port {
Socket s = null;
DataOutputStream dops = null;
public C_port(){
try {
s = new Socket("127.0.0.1",60000);
dops = new DataOutputStream(s.getOutputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
dops.writeUTF("Hello_world");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new C_port();
}
}
可是,在我运行了S端的代码和C端的代码之后,我得到的console窗口的提示如下:
一个“不停循环动态报错的console窗口”...
求高手点拨:
这是怎么回事..
应该怎么修改...?
谢谢高手!!
一百分奉上!!
一位日日夜夜向着理想奔跑的筑梦者