Java 将填充的对象发送到服务器并接收回消息

Java 将填充的对象发送到服务器并接收回消息,java,sockets,objectoutputstream,Java,Sockets,Objectoutputstream,我正在尝试将填充了学生详细信息的学生对象发送到特定服务器,然后读取从服务器发送回来的消息 主要类别: public class Lab6 { Socket myClient; ObjectOutputStream outputStream; public void socket() { try { myClient = new Socket("217.73.66.75", 7879); } catc

我正在尝试将填充了学生详细信息的学生对象发送到特定服务器,然后读取从服务器发送回来的消息

主要类别:

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", "dave.smith@city.ac.uk");
           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;
    }
}
问题是,它所做的只是在控制台上打印学生的详细信息,而程序只是说正在运行。请帮我找出我做错了什么。

您的代码缺少服务器部分:您的代码正在打开“客户端”套接字两次;一次给它写信;后来,我试着从这样一个插座上读一些东西

但这不是客户机/服务器的工作方式

服务器端需要打开一个;并等待传入的客户端连接到它

然后客户端打开一个到服务器的套接字连接;发送数据,服务器接收数据并执行某些操作


有关该主题的第一个简单教程,请参见

你所说的服务器部分是什么意思?