我試圖在一個服務器和一個客戶端之間創建一個簡單的傳輸。我正試圖從客戶端發送一個對象到服務器。我檢查了我的代碼很多次,真的不知道爲什麼t不起作用。此外,編號喜歡補充說,我已經在netbeans中創建了兩個單獨的項目,一個用於客戶端,另一個用於服務器。代碼如下:Java中的套接字和對象非常基本的示例
客戶:
package client;
import java.net.*;
import java.io.*;
import java.util.Scanner;
import java.io.Serializable;
class Object implements Serializable {
String one;
String two;
public Object(String one, String two){
this.one = one;
this.two = two;
}
@Override
public String toString(){
return "\nOne: " + one +"\nTwo: " + two;
}
}
public class Client {
public static void main(String[] args){
try {
Object obj= new Object ("Something", "Else");
Socket sock = new Socket("127.0.0.1", 1111);
ObjectOutputStream oos = new ObjectOutputStream(sock.getOutputStream());
System.out.println("Connecting to "+ sock.getInetAddress()+ " and port "+sock.getPort());
System.out.println("Local Address :"+sock.getLocalAddress()+" Port:"+sock.getLocalPort());
oos.writeObject(obj);
oos.flush();
oos.close();
sock.close();
System.out.println("Connection Closing...");
} catch (Exception ex){
System.out.println("No Conenction");
}
}
}
服務器:
<!-- language: lang-java -->
package server;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.*;
import java.io.*;
class Object implements Serializable {
String one;
String two;
public Object(String one, String two){
this.one = one;
this.two = two;
}
@Override
public String toString(){
return "\nOne: " + one +"\nTwo: " + two;
}
}
public class Server {
public static void main(String[] args){
try{
ServerSocket server = new ServerSocket(1111,10);
System.out.println("Waiting Incoming Connection...");
System.out.println("Local Address :"+server.getInetAddress()+" Port:"+server.getLocalPort());
Socket sock = server.accept();
ObjectInputStream ois = new ObjectInputStream(sock.getInputStream());
Object ob=new Object ("Once", "Upon"); //for test
Object obj2= null;
try{
obj2 = (Object)ois.readObject();
System.out.println(obj2);
}catch (Exception ex){
System.out.println("nothing...");
}
System.out.println(ob);
ois.close();
}catch (Exception ex){
System.out.println("Error during I/O");
ex.getMessage();
ex.printStackTrace();
}
}
}
代碼工作,但對象永遠不會發送= /。我得到的消息是「無......」,這是例外。連接的工作原理是通過簡單的消息BufferedReader(),BufferedWritter()交換消息。問題是與對象....
請考慮清理您的代碼示例。 – millimoose 2013-03-14 22:42:16
當你發生異常時,不要只是打印'沒有',或者什麼都不打印。 ***從來沒有***做到這一點。打印*例外。*然後你會知道發生了什麼問題。如果你已經適當注意了這個問題,你甚至不必提出這個問題。 – EJP 2013-03-15 01:43:29