作者sbrhsieh (sbr)
看板java
标题Re: 请教一下要如何把一各object丢到socket getoup …
时间Wed Dec 24 12:26:55 2008
※ 引述《Gitangan (周大猫)》之铭言:
: //Code
: public class Client{
: public Socket socket;
: public ObjectOutputStream outstream;
: public ObjectInputStream instream;
: public static String servername;
: public static int port;
: public static void main(String args[]) {
: servername = "localhost";
: port = 600;
: Client client = new Client();
: }
: public Client() { //建构子
: try {
: socket = new Socket(servername, port); //new Socket
: outstream = new ObjectOutputStream(socket.getOutputStream());
: instream = new ObjectInputStream(socket.getInputStream());
: //程式停在这边,但程式没有终止...停在ObjectInputStream...
: ....
: }catch (IOException e) {}
: }
: }
ObjectInputStream 在建构时就会 consume 底层的 InputStream,ObjectInputStream
会先读取一些 bytes 来验证是否是正确的 serialization stream header。
你的 client site 程式会停在建构 ObjectInputStream 的那个
statement,表示
client 程式以 socket 连接上 server site 後,server site 并没有拿 socket
output stream 来建构 ObjectOutputStream,所以 client site 没有收到 serial-
ization stream header。
另外,两端的程式如果都要建立 ObjectInputStream/ObjectOutputStream 在 socket
stream 之上,顺序是重要的,如果两端都是先建立 ObjectInputStream,两端的程式
都会 block 住(看起来 client/server 都当掉了)。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.134.17
※ 编辑: sbrhsieh 来自: 218.173.134.17 (12/24 12:31)
1F:推 carlcarl:那如果in out分做两个thread 是不是就没差了@@? 12/24 13:16
2F:→ sbrhsieh:视你怎麽做。要讨论的话请回文附程式码。 12/24 14:34