一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java中使用Socket發送Java對象實例

Java中使用Socket發送Java對象實例

2019-12-18 17:03junjie JAVA教程

這篇文章主要介紹了Java中使用Socket發送Java對象實例,本文使用對象流直接發送對象,本文同時給出代碼實例,需要的朋友可以參考下

以前寫聊天程序都是用字符串加個標志就直接發送到服務器,然后轉發了。
現在要求我用對象流直接發送對象,測試了一下,記錄一下。
其實我更傾向用json發送對象的,json說白了也是字符串,等有空了好好研究研究。
主要功能:客戶端給服務器發送個對象,服務器接收到了打印出來。反過來是差不多了,就不寫了。

Java中使用Socket發送Java對象實例

上面是整體架構。
User類就兩個屬性。

 

復制代碼代碼如下:


package com.qiantu.bean;

 

import java.io.Serializable;

public class User implements Serializable {
 private static final long serialVersionUID = 1L;
 private String name;
 private String password;
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
}

 

 

服務器端:接收客戶端發送過來的user對象:

 

復制代碼代碼如下:


package test;

 

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

import com.qiantu.bean.User;

public class TestServer {
 public void start() {
  try {
   ServerSocket ss = new ServerSocket(7777);
   System.out.println("start to accept...");
   Socket socket = ss.accept();
   
   //建立輸入流
   ObjectInputStream ois = new ObjectInputStream(
              new BufferedInputStream(socket.getInputStream()));  
            Object obj = ois.readObject();  
            if (obj != null) {  
                User user = (User)obj;//把接收到的對象轉化為user
                System.out.println("user: " + user.getName());  
                System.out.println("password: " + user.getPassword());
            }  
            ois.close();
            socket.close();
            ss.close();
  } catch (IOException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
 }
 
 public static void main(String[] args) {
  new TestServer().start();
 }
}

 

 

客戶端:給服務器端發送user對象:

 

復制代碼代碼如下:


package client;

 

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import com.qiantu.bean.User;

public class TestClient {
 public static void main(String[] args) {
  new TestClient().start();
 }

 public void start() {
  try {
   Socket socket = new Socket("127.0.0.1", 7777);
   //建立輸入流
   ObjectOutputStream oos = new ObjectOutputStream(socket
     .getOutputStream());
   User user = new User();
   user.setName("梁國俏");
   user.setPassword("123456");
   //輸入對象, 一定要flush() 
   oos.writeObject(user);
   oos.flush();
   
   oos.close();
   socket.close();
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

 


運行結果:

Java中使用Socket發送Java對象實例

要注意的地方:
《1》實體類要實現Serializable類,添加標識serialVersionUID。
《2》發送對象之后要flush();
《3》這個比較重要,搞了我半天不知道哪里出錯,言來是這個。
服務器端和客戶端兩邊的實體類要一模一樣,類名一樣,包名也要一樣。我就是因為包名不一樣搞了很久。。。。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 扒开双腿猛进入爽爽视频ai | 国产精品高清在线 | 国产第一综合另类色区奇米 | 成人影院www在线观看 | 2048论坛永久入口 原创合集 | 成年极品漫画在线观看 | 午夜看片a福利在线观看 | 国产乱叫456在线 | 动漫美女被褥吸奶漫画漫画 | 9久热这里只有精品视频在线观看 | 奇米网狠狠网 | 热辣小秘书办公室 | 国产自在线拍 | 猥琐对着美女飞机喷到脸上 | 亚洲日韩中文字幕一区 | 30分钟的高清视频在线观看 | 午夜福利自怕 | 亚洲AV久久久噜噜噜久久 | 美女脱了内裤让男生玩屁股 | 99ri在线视频网 | 国产一级特黄在线播放 | 男女姓交大视频免费观看 | 精品久久久久久影院免费 | 美女用屁股把人吞进肚子 | 丁香五香天堂 | 亚洲精品人成网在线播放影院 | 黄动漫车车好快的车车a | 调教扩张宫颈女人惨叫 | 精品视频网站 | 日本久久啪啪婷婷激情五月 | 亚洲精品视频网 | 国产免费一区不卡在线 | 亚洲AV 中文字幕 国产 欧美 | 草莓在深夜释放自己软件 | 亚洲成年人在线观看 | 亚洲色大成网站www久久九九 | 美女视频在线观看视频 | 国产高清不卡码一区二区三区 | 四虎在线视频免费观看视频 | ass巨大胖女人sias | 国色天香高清版 |