lqxue

          常用鏈接

          統計

          book

          tools

          最新評論

          通過socket傳遞java對象(對象序列化)

          這篇文章主要實現的是j:通過socket傳遞Java對象。采用的方法就是對象序列化。方法是:通過socket建立c/s連接;通過ObjectOutputStream,ObjectOutputStream 讀寫對象。唯一需要留意的是傳遞的java 對象需要實現Serializable標記接口。代碼包括:java對象類,Employee; socket client類;server類。主要代碼如下:

          java對象類:


          import java.io.*;
          import java.util.*;

          public class Employee implements Serializable {

              private int employeeNumber;

              private String employeeName;

              Employee(int num, String name) {
                  employeeNumber = num;
                  employeeName = name;
              }

              public int getEmployeeNumber() {
                  return employeeNumber;
              }

              public void setEmployeeNumber(int num) {
                  employeeNumber = num;
              }

              public String getEmployeeName() {
                  return employeeName;
              }

              public void setEmployeeName(String name) {
                  employeeName = name;
              }
          }

          client類:
          import java.io.*;
          import java.net.*;

          public class Client {
              public static void main(String[] arg) {
                  try {
                      Employee joe = new Employee(150, "Joe");
                      System.out.println("employeeNumber= " + joe.getEmployeeNumber());
                      System.out.println("employeeName= " + joe.getEmployeeName());
                      Socket socketConnection = new Socket("127.0.0.1", 11111);
                      ObjectOutputStream clientOutputStream = new ObjectOutputStream(
                              socketConnection.getOutputStream());
                      ObjectInputStream clientInputStream = new ObjectInputStream(
                              socketConnection.getInputStream());
                      clientOutputStream.writeObject(joe);
                      joe = (Employee) clientInputStream.readObject();
                      System.out.println("employeeNumber= " + joe.getEmployeeNumber());
                      System.out.println("employeeName= " + joe.getEmployeeName());
                      clientOutputStream.close();
                      clientInputStream.close();
                  } catch (Exception e) {
                      System.out.println(e);
                  }
              }
          }

          Server類:
          public class Server {

              public static void main(String[] arg) {

                  Employee employee = null;

                  try {

                      ServerSocket socketConnection = new ServerSocket(11111);

                      System.out.println("Server Waiting");

                      Socket pipe = socketConnection.accept();

                      ObjectInputStream serverInputStream = new ObjectInputStream(pipe
                              .getInputStream());

                      ObjectOutputStream serverOutputStream = new ObjectOutputStream(pipe
                              .getOutputStream());

                      employee = (Employee) serverInputStream.readObject();

                      employee.setEmployeeNumber(256);
                      employee.setEmployeeName("John");

                      serverOutputStream.writeObject(employee);

                      serverInputStream.close();
                      serverOutputStream.close();

                  } catch (Exception e) {
                      System.out.println(e);
                  }
              }

          }

          posted on 2007-08-01 14:08 lqx 閱讀(272) 評論(0)  編輯  收藏 所屬分類: network

          主站蜘蛛池模板: 邯郸市| 高邑县| 裕民县| 历史| 增城市| 镇沅| 姜堰市| 芦溪县| 得荣县| 全州县| 姚安县| 马关县| 宜昌市| 南汇区| 敦煌市| 垦利县| 汾西县| 满城县| 凤冈县| 榆树市| 崇州市| 凌源市| 竹溪县| 甘泉县| 唐海县| 临颍县| 博白县| 红原县| 富宁县| 富民县| 周至县| 页游| 高阳县| 无锡市| 浏阳市| 罗定市| 东安县| 天台县| 漯河市| 孙吴县| 法库县|