2012-06-03 290 views
-1

我正在使用Java自己的服務器。我需要做一個套接字連接並從客戶端接收很多對象。我做到了,它有效,但我不知道這是否是最好的(最快)解決方案。這裏是例子我的代碼:服務器連接

try { 
    serverSocket=new ServerSocket(18234, 1000); 
} catch (IOException e) { 
    System.out.print("Server failed.."); 
    e.printStackTrace(); 
} 

Object x; 
ObjectInputStream ois; 
System.out.println("Waiting for connection..."); 
Socket connection= serverSocket.accept(); 
System.out.println("Connection received from " + connection.getInetAddress().getHostName()); 

while(true){ 
    ois = new ObjectInputStream(connection.getInputStream()); 
    x=ois.readObject(); 
    System.out.println(x.getString()); 
    if(x.getString().equals("END")) break; 
} 

問題是,當我嘗試接受新的對象,所有的時間我必須做新的ObjectInputStream的..是這個解決方案是否正確?我必須做非常快的服務器,並且在我看來,所有時間都在做新的ObjectInputStream太貴了。

+0

瞭解如何使用vert.x編寫服務器。爲什麼寫自己的? – duffymo

+0

*「問題是,當我嘗試接收新對象時,所有時間都必須執行新的ObjectInputStream」*,但是爲什麼您必須在每次迭代中創建一個新對象,爲什麼不能有一個對象呢? –

+0

因爲如果我不這樣做我得到異常:java.io.StreamCorruptedException:無效的類型代碼:AC – user1247373

回答

0

在兩端使用相同的ObjectOutputStream和ObjectInputStream來實現套接字的生命週期。你關於被迫使用一個新對象的陳述是不正確的。