作者sbrhsieh (sbr)
看板java
标题Re: 请教一下要如何把一各object丢到socket getoup …
时间Thu Dec 25 00:04:17 2008
※ 引述《Gitangan (周大猫)》之铭言:
: 不好意思还不是很懂2位板友的解说= =
: 我再把我的server的程式码贴上,
: 目前程式一直卡住中..
请不要问怎麽改,大家讨论一下问题点。
先不管程式细节,看 client/server 程式大体上的流程。
[Client site]
socket = new Socket(servername, port);
// 下面这个 statement 会导致 serialization stream header 送到 server site
outstream = new ObjectOutputStream(socket.getOutputStream());
// ObjectInputStream constructor 会 block 住直到 server site 送来
// serialization stream header
instream = new ObjectInputStream(socket.getInputStream());
[Server site]
ss = new ServerSocket(port);
ServerStart.socket = t.socket = ss.accept();
// 等待 client 送来 serialization stream header,没问题可收到,不会 block 住
instream = new ObjectInputStream(t.socket.getInputStream());
// server 程式会 block 在这里直到 client 以 writeUTF method 送过来一字串,
// 但是 client 程式在建构 ObjectInputStream 时就 block 住,没有(也不再)送出
// 任何数据到 server site,所以 server 程式会一直停在这里,没有机会建构
// ObjectOutputStream,那麽 client site 无法收到 serialization stream header
// 而一直停住,於是 client/server 程式皆陷在一直等待对方送数据过来的状态
message = instream.readUTF();
if (message.equals("/bye")) {
outstream = new ObjectOutputStream(socket.getOutputStream());
outstream.writeUTF(message);
...
}
else {
outstream = new ObjectOutputStream(socket.getOutputStream());
outstream.writeUTF(message);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.135.215
※ 编辑: sbrhsieh 来自: 218.173.135.215 (12/25 00:07)
※ 编辑: sbrhsieh 来自: 218.173.135.215 (12/25 00:08)
1F:→ Gitangan:我就是因为SERVER端顺序弄错所以造成block现象... 12/25 00:11