2017-03-21 8 views
0

生徒の詳細が入力された生徒オブジェクトを特定のサーバーに送信し、サーバーから返されたメッセージを読み取ろうとしています。サーバーにデータを送信してメッセージを返す

メインクラス:

public class Lab6 { 
    Socket myClient; 
    ObjectOutputStream outputStream; 

    public void socket() { 
     try { 
      myClient = new Socket("217.73.66.75", 7879); 
     } 
     catch (UnknownHostException e) { 
      System.out.println(e); 
     } 
     catch (IOException e) { 
      System.out.println(e); 
     } 
    } 

    public void objectWriter() { 
     try { 
      myClient = new Socket("217.73.66.75", 7879); 
      outputStream = new ObjectOutputStream(myClient.getOutputStream()); 
      Student student = new Student(22, "Dave Smith", "130017639", "[email protected]"); 
      System.out.println("Student Details:" + student.toString()); 
      outputStream.writeObject(student); 

     } 
     catch (UnknownHostException e) { 
      System.out.println(e); 
     } 
     catch (IOException e) { 
      System.out.println(e); 
     } 
    } 

    /** 
    * 
    */ 
    public void objectReader() { 
     try { 
      ObjectInputStream inputStream = new ObjectInputStream(myClient.getInputStream()); 
      Student returnMessage = (Student) inputStream.readObject(); 
      System.out.println("return Message is=" + returnMessage); 
      myClient.close(); 
      inputStream.close(); 
     } 
     catch (IOException e) { 
      System.out.println(e); 
     } 
     catch (ClassNotFoundException ex) { 
      System.out.println("ERR: Cannot perform input. Class not found." + ex); 
     } 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     Lab6 ss; 
     ss = new Lab6(); 
     ss.socket(); 
     ss.objectWriter(); 
     ss.objectReader(); 
    } 
} 

Studentクラス:

import java.io.Serializable; 

public class Student implements Serializable { 
    private static final long serialVersionUID = -1848148348931789644L; 

    private String name; 
    private int age; 
    private String studentID; 
    private String email; 
    public String gender = "na"; 
    public static int instances = 0; 

    // Getters 
    public int getAge(){ 
     return this.age; 
    } 
    public String getName(){ 
     return this.name; 
    } 
    public String getStudentID(){ 
     return this.studentID; 
    } 
    public String getEmail(){ 
     return this.email; 
    } 

    // Setters 
    public void setAge(int age){ 
     this.age = age; 
    } 
    public void setName(String name){ 
     this.name = name; 
    } 
    public void setStudentID(String studentID){ 
     this.studentID = studentID; 
    } 
    public void setEmail(String email){ 
     this.email = email; 
    } 

    /** 
    * Default constructor. Populates age and gender with defaults 
    */ 
    public Student(){ 
     this.age = 18; 
     this.name = "Not Set"; 
     this.studentID = "Not Set"; 
     this.email = "Not Set"; 
    } 

    /** 
    * Constructor with parameters 
    * @param age integer 
    * @param name String with the name 
    * @param studentID String with the studentID 
    * @param email String with the email 
    */ 
    public Student (int age, String name, String studentID, String email){ 
     this.age = age; 
     this.name = name; 
     this.studentID = studentID; 
     this.email = email; 
    } 
    /** 
    * Gender constructor 
    * @param gender 
    */ 
    public Student(String gender){ 
     this(); // Must be the first line! 
     this.gender = gender; 

    } 

    protected void finalize() throws Throwable{ 
     //do finalization here 
     super.finalize(); //not necessary if extending Object. 
    } 

    /************************************************************************* 
    * My Methods: 
    * 
    *************************************************************************/ 

    public String toString(){ 
     return "Student ID: " + studentID + "Name: " + this.name + " Age: " 
       + this.age + " Gender: " + this.gender + "Email: " + email; 
    } 
} 

問題はそれがないすべては、コンソール上の学生の詳細およびプログラムをプリントアウトであるということであるだけで実行していると言います。私が間違っていることを見つけるのを助けてください。

答えて

1

お客様のコードにサーバーの部分がありません:お客様のコードは「クライアント」ソケットを2回開きます。一度それに書いてください。後でこのようなソケットから何かを読み込もうとしています。

しかし、それはクライアント/サーバーの仕組みではありません!

ServerSocketを開く必要があります。着信クライアントが接続するのを待ちます。

次に、クライアントはそのサーバーにソケット接続を開きます。データを送信し、サーバーがデータを取得して何かをします。

を参照して、そのトピックの最初の簡単なチュートリアルをご覧ください。

+0

サーバーの部分はどういう意味ですか? – donk2017

関連する問題