2017-03-21 5 views
0

학생 세부 정보가 채워진 학생 개체를 특정 서버로 보내고 서버에서 보낸 메시지를 읽으려고합니다.채워진 개체를 서버에 보내고 메시지를 다시 받음

Main 클래스 :

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(); 
    } 
} 

학생 클래스 :

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

코드에 서버 부분이 누락되었습니다. 코드에서 "클라이언트"소켓을 두 번 열어 두었습니다. 한 번 그것에 쓰는; 그리고 나중에 그러한 소켓에서 무언가를 읽으려고 시도합니다.

하지만 클라이언트/서버가 작동하는 방식이 아닙니다.

서버 쪽에서는 ServerSocket을 열어야합니다. 들어오는 클라이언트가 연결될 때까지 기다립니다.

그런 다음 클라이언트가 해당 서버에 소켓 연결을 엽니 다. 데이터를 보내고, 서버가 데이터를 집어 들고 뭔가를합니다.

을 참조하십시오.

+0

서버 부분은 무엇을 의미합니까? – donk2017