日期:2014-05-19  浏览次数:20641 次

这个程序始终运行不通过,对应server已经能运行,求解答
import java.net.*;
import java.io.*;

public class TestSockClient {
public static void main(String args[]) {
OutputStream os = null;
InputStream is = null;
try {
Socket s = new Socket ("localhost",8888);
os = s.getOutputStream();
is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);

dos.writeUTF("hi,I'm client.");
if (dis.readUTF() != null) 
System.out.println(dis.readUTF());
dis.close();
dos.close();
s.close();
} catch (UnknownHostException ue) {
ue.printStackTrace();
} catch(IOException ie) {
ie.printStackTrace();
}

------解决方案--------------------
运行不通过是啥意思?是阻塞住了,还是什么?
server端如何接收和发送的?
------解决方案--------------------
什么错误啊
运行不通?
------解决方案--------------------
楼主,说清楚啊
------解决方案--------------------
我觉得可能是
while(dis.readUTF() != null) {
System.out.println(dis.readUTF());
System.out.println("From:" + s.getInetAddress());
System.out.println("Port:" + s.getPort());
}
这个循环的问题。
在第一次读取了客户端写过来的信息后,运行循环里的代码块。
接着,再次判断循环条件dis.readUTF() != null,就是这给停住了,它应该是在等客户端写信息过来。
而客户端写完第一次之后也在等服务器,所以就停那了。
我建议你如果这个循环里的代码,没有循环的必要就不要用了,或是改一下循环条件。
让它在特定的时候能够跳出来,结束循环。进而继续运行后面的代码。
PS:仅代表个人看法、、、