我程序中有这样的代码:
1: Socket clientSocket = serverSocket.accept();
2: InputStream is=clientSocket.getInputStream();
3: ObjectInputStream ois=new ObjectInputStream(is);
4:...每次运行到第三行整个程序就停止往下运行了,
忘大虾求解!!
在线等
1: Socket clientSocket = serverSocket.accept();
2: InputStream is=clientSocket.getInputStream();
3: ObjectInputStream ois=new ObjectInputStream(is);
4:...每次运行到第三行整个程序就停止往下运行了,
忘大虾求解!!
在线等
解决方案 »
- 如何能打开jsp就直接执行action
- Java+struts2建站
- 『高分求助』大家进来帮我看看,关于Socket编程的,给我出出主意,谢谢~
- eclipse 3.1 + myeclipse4.1 的下载地址...
- http通信的小问题~~谢谢帮忙
- ActionListener中怎么解决SQLException
- HttpURLConnection这个类中有没有设session = true;的方法!,知都请进!
- 《thinking in java》的小疑问
- java的事件处理机制如何运用?
- 寻求乱序算法。
- 请各位推荐有关数据结构和算法的书
- 100分,求一个大文本数据量处理的思路!!!!!!!!!
import java.net.ServerSocket;
import java.net.Socket;public class test {
public static void main(String[] args) throws Exception
{
ServerSocket serverSocket=new ServerSocket(56789);
Socket clientSocket = serverSocket.accept();
InputStream is=clientSocket.getInputStream();
System.out.println("not past");
ObjectInputStream ois=new ObjectInputStream(is);
System.out.println("pasted");
}
}
以上服务器端程序运行后
有一个客户端进行连接,屏幕上打印出:not past
但是没打印出:pasted
请问是为什么,怎么克服?
第一,你都没有指定具体的Class,JVM不知道需要多少字节才可以demarshall,所以会死锁,你需要让这个Class在both server and client都存在,就可以使用
第二:通过网络marshall Java Object,会有过多的传输overhead,在Object demarshall也会有没有必要的runtime overhead
第三:ObjectInputStream这样的Object Stream通用性很差,你需要force你的client是Java Client,否则需要比较复杂的language binding来解决如果你一定要用Object stream,参考我说的第一点,如果你们公司在做project,建议不要使用Object Stream,如果非要用,RMI已经做好了这些工作,你就直接用RMI就可以