0
所以我只是測試了一些客戶端服務器的東西(我在一個更大的項目中正在處理它,但它一直在拋出錯誤,所以我決定確保我做的是正確的。不是) 其中涉及ObjectOutput和輸入流。當我在本地主機上運行客戶端和服務器時,它完美地工作,但如果我在我的計算機上運行我的Linux服務器和客戶端上的服務器,那麼當我到達提取對象的那一行時,連接已重置。下面的代碼:Socket連接意外關閉
客戶:
public static void main(String[] args){
String[] stuff = {"test", "testing", "tester"};
Socket s = null;
ObjectOutputStream oos = null;
try {
s = new Socket("my.server.website", 60232);
oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject(stuff);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
s.close();
oos.close();
} catch (IOException e) {}
}
}
服務器:
public static void main(String[] args){
ServerSocket ss = null;
Socket s = null;
ObjectInputStream ois = null;
try {
ss = new ServerSocket(60232);
s = ss.accept();
System.out.println("Socket Accepted");
ois = new ObjectInputStream(s.getInputStream());
Object object = ois.readObject();
System.out.println("Object received");
if (object instanceof String[]){
String[] components = (String[]) object;
for (String string : components){
System.out.println(string);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
try {
ss.close();
s.close();
ois.close();
} catch (IOException e) {}
}
}
謝謝,我不能相信這件事很簡單! – EnvisionRed
實際上,您不需要關閉底層套接字。它已經被'oos.close()。'關閉了 – EJP