亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中使用Socket發(fā)送Java對(duì)象實(shí)例

 更新時(shí)間:2015年05月20日 09:38:33   投稿:junjie  
這篇文章主要介紹了Java中使用Socket發(fā)送Java對(duì)象實(shí)例,本文使用對(duì)象流直接發(fā)送對(duì)象,本文同時(shí)給出代碼實(shí)例,需要的朋友可以參考下

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

上面是整體架構(gòu)。
User類就兩個(gè)屬性。

復(fù)制代碼 代碼如下:

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

服務(wù)器端:接收客戶端發(fā)送過來的user對(duì)象:

復(fù)制代碼 代碼如下:

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;//把接收到的對(duì)象轉(zhuǎn)化為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();
 }
}

客戶端:給服務(wù)器端發(fā)送user對(duì)象:

復(fù)制代碼 代碼如下:

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");
   //輸入對(duì)象, 一定要flush()
   oos.writeObject(user);
   oos.flush();
   
   oos.close();
   socket.close();
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}


運(yùn)行結(jié)果:

要注意的地方:
《1》實(shí)體類要實(shí)現(xiàn)Serializable類,添加標(biāo)識(shí)serialVersionUID。
《2》發(fā)送對(duì)象之后要flush();
《3》這個(gè)比較重要,搞了我半天不知道哪里出錯(cuò),言來是這個(gè)。
服務(wù)器端和客戶端兩邊的實(shí)體類要一模一樣,類名一樣,包名也要一樣。我就是因?yàn)榘灰粯痈懔撕芫谩?。?!?/p>

相關(guān)文章

  • springMVC實(shí)現(xiàn)圖形驗(yàn)證碼(kaptcha)代碼實(shí)例

    springMVC實(shí)現(xiàn)圖形驗(yàn)證碼(kaptcha)代碼實(shí)例

    這篇文章主要介紹了springMVC實(shí)現(xiàn)圖形驗(yàn)證碼(kaptcha)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值
    2019-09-09
  • 基于OpenCv與JVM實(shí)現(xiàn)加載保存圖像功能(JAVA?圖像處理)

    基于OpenCv與JVM實(shí)現(xiàn)加載保存圖像功能(JAVA?圖像處理)

    openCv有一個(gè)名imread的簡單函數(shù),用于從文件中讀取圖像,本文給大家介紹JAVA?圖像處理基于OpenCv與JVM實(shí)現(xiàn)加載保存圖像功能,感興趣的朋友一起看看吧
    2022-01-01
  • Java中SynchronousQueue的底層實(shí)現(xiàn)原理剖析

    Java中SynchronousQueue的底層實(shí)現(xiàn)原理剖析

    BlockingQueue的實(shí)現(xiàn)類中,有一種阻塞隊(duì)列比較特殊,就是SynchronousQueue(同步移交隊(duì)列),隊(duì)列長度為0。本文就來剖析一下SynchronousQueue的底層實(shí)現(xiàn)原理,感興趣的可以了解一下
    2022-11-11
  • java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法

    java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法,分享一個(gè)文件編碼轉(zhuǎn)換的工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • SpringBoot整合Web開發(fā)之文件上傳與@ControllerAdvice

    SpringBoot整合Web開發(fā)之文件上傳與@ControllerAdvice

    @ControllerAdvice注解是Spring3.2中新增的注解,學(xué)名是Controller增強(qiáng)器,作用是給Controller控制器添加統(tǒng)一的操作或處理。對(duì)于@ControllerAdvice,我們比較熟知的用法是結(jié)合@ExceptionHandler用于全局異常的處理,但其作用不止于此
    2022-08-08
  • SpringMVC的REST風(fēng)格的四種請(qǐng)求方式總結(jié)

    SpringMVC的REST風(fēng)格的四種請(qǐng)求方式總結(jié)

    下面小編就為大家?guī)硪黄猄pringMVC的REST風(fēng)格的四種請(qǐng)求方式總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • SpringBoot中WEB的啟動(dòng)流程分析

    SpringBoot中WEB的啟動(dòng)流程分析

    今天我們就來分析下springboot啟動(dòng)web項(xiàng)目整個(gè)流程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-03-03
  • JavaGUI常用窗體組件與面板使用詳解

    JavaGUI常用窗體組件與面板使用詳解

    GUI即圖形用戶界面,它是基于圖形的界面,windows就是一個(gè)圖形用戶界面的操作系統(tǒng),而DOS是基于命令提示符的操作系統(tǒng),GUI編程就是編出一個(gè)圖形用戶界面的軟件,它使用圖形的方式,以菜單、按鈕、表示、圖文框等標(biāo)準(zhǔn)界面元素組成的用戶操作界面
    2023-03-03
  • Java獲取控制臺(tái)輸入的兩種方法小結(jié)

    Java獲取控制臺(tái)輸入的兩種方法小結(jié)

    這篇文章主要介紹了Java獲取控制臺(tái)輸入的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Spring MVC 處理一個(gè)請(qǐng)求的流程

    Spring MVC 處理一個(gè)請(qǐng)求的流程

    Spring MVC是Spring系列框架中使用頻率最高的部分。不管是Spring Boot還是傳統(tǒng)的Spring項(xiàng)目,只要是Web項(xiàng)目都會(huì)使用到Spring MVC部分。因此程序員一定要熟練掌握MVC部分。本篇博客簡要分析Spring MVC處理一個(gè)請(qǐng)求的流程。
    2021-02-02

最新評(píng)論