最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

復(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對象:

復(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;//把接收到的對象轉(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對象:

復(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");
   //輸入對象, 一定要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)識serialVersionUID。
《2》發(fā)送對象之后要flush();
《3》這個比較重要,搞了我半天不知道哪里出錯,言來是這個。
服務(wù)器端和客戶端兩邊的實(shí)體類要一模一樣,類名一樣,包名也要一樣。我就是因?yàn)榘灰粯痈懔撕芫?。。。?/p>

相關(guān)文章

最新評論

伊宁市| 来宾市| 赫章县| 延津县| 合肥市| 开鲁县| 丹凤县| 大新县| 海盐县| 凤阳县| 长宁区| 黑龙江省| 驻马店市| 龙山县| 修文县| 祥云县| 上林县| 阿坝| 新巴尔虎右旗| 镇沅| 江华| 曲松县| 西乌珠穆沁旗| 沙河市| 垦利县| 固阳县| 剑河县| 时尚| 陆河县| 沙河市| 东兰县| 工布江达县| 博湖县| 新郑市| 贵定县| 陇川县| 洛南县| 合阳县| 白水县| 申扎县| 喀喇沁旗|