新聞中心
Java Socket網(wǎng)絡(luò)傳輸如何才能更好的完成自己的任務(wù)?下面我們就來看看有關(guān)的代碼介紹,希望大家有所收獲。在網(wǎng)絡(luò)中的兩臺機(jī)器中傳輸對象,前提首先是基于同一個平臺,這是序列化的基礎(chǔ),所以這里主要有兩種做法:

網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為報(bào)廢汽車回收等企業(yè)提供專業(yè)服務(wù)。
采用Java Socket網(wǎng)絡(luò)傳輸?shù)男蛄谢瘷C(jī)制,將對象“壓扁”成二進(jìn)制字節(jié),將二進(jìn)制字節(jié)在網(wǎng)絡(luò)中傳輸;
自定義協(xié)議,將對象用字符串描述出來,將字符串用二進(jìn)制表示,在網(wǎng)絡(luò)中傳輸,在另外一邊用相反的策略解析這個字符串,重新構(gòu)造業(yè)務(wù)對象,這個方法能夠在異構(gòu)平臺中進(jìn)行傳輸而不變形,但是需要額外的編寫“壓扁”和“充氣”的代碼;
我們這里用***種方法:
- package stream.demo;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.OutputStream;
- import java.util.Date;
- public class Persistence {
- public static void main(String[] args) {
- byte[] bs = Persistence.toBytes();
- //在網(wǎng)絡(luò)中進(jìn)行傳輸
- Persistence.getBytes(bs);
- }
- public static byte[] toBytes() {
- Person p = new Person();
- p.setName("corey");
- p.setTall(171);
- p.setBirthday(new Date());
- p.setAddress(new Address("yiyang", "ziyang"));
- ByteArrayOutputStream out = new
ByteArrayOutputStream();- try {
- ObjectOutputStream oout = new ObjectOutputStream(out);
- oout.writeObject(p);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return out.toByteArray();
- }
- public static void getBytes(byte[] bs) {
- try {
- ByteArrayInputStream byteIn = new
ByteArrayInputStream(bs);- ObjectInputStream in = new ObjectInputStream(byteIn);
- Person p = (Person) in.readObject();
- System.out.println(p.getName());
- System.out.println(p.getTall());
- System.out.println(p.getBirthday());
- System.out.println(p.getAddress().getCity());
- System.out.print(p.getAddress().getStreet());
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
其中服務(wù)端代碼片段為:
- in = this.getRequestSocket().getInputStream();
- out = this.getRequestSocket().getOutputStream();
- byte[] bs = Persistence.toBytes();
- System.out.println("發(fā)送數(shù)字長度:"+bs.length);
- out.write(bs);
- this.getRequestSocket().close();
- 客戶端代碼片段為:
- InputStream in = request.getInputStream();
- byte[] bin = new byte[200];
- int length = 0;
- while ((length = in.read(bin)) != -1) {
- System.out.println("length:" + length);
- Persistence.getBytes(bin);
- }
以上就是對Java Socket網(wǎng)絡(luò)傳輸?shù)脑敿?xì)介紹,希望大家有所幫助。
網(wǎng)站欄目:JavaSocket網(wǎng)絡(luò)傳輸?shù)男蛄谢瘷C(jī)制
URL分享:http://fisionsoft.com.cn/article/ccdhspo.html


咨詢
建站咨詢
