Re: 請教一下要如何把一各object丟到socket getoup …
※ 引述《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)
推
12/24 13:16, , 1F
12/24 13:16, 1F
→
12/24 14:34, , 2F
12/24 14:34, 2F
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章