今天就跟大家聊聊有關(guān)Java 中怎么利用Socket實(shí)現(xiàn)網(wǎng)絡(luò)傳輸,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供大興安嶺企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站建設(shè)、做網(wǎng)站、HTML5建站、小程序制作等業(yè)務(wù)。10年已為大興安嶺眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
采用Java Socket網(wǎng)絡(luò)傳輸?shù)男蛄谢瘷C(jī)制,將對(duì)象“壓扁”成二進(jìn)制字節(jié),將二進(jìn)制字節(jié)在網(wǎng)絡(luò)中傳輸;
自定義協(xié)議,將對(duì)象用字符串描述出來(lái),將字符串用二進(jìn)制表示,在網(wǎng)絡(luò)中傳輸,在另外一邊用相反的策略解析這個(gè)字符串,重新構(gòu)造業(yè)務(wù)對(duì)象,這個(gè)方法能夠在異構(gòu)平臺(tái)中進(jìn)行傳輸而不變形,但是需要額外的編寫(xiě)“壓扁”和“充氣”的代碼;
我們這里用***種方法:
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ù)字長(zhǎng)度:"+bs.length); out.write(bs); this.getRequestSocket().close(); 客戶(hù)端代碼片段為: 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); }
看完上述內(nèi)容,你們對(duì)Java 中怎么利用Socket實(shí)現(xiàn)網(wǎng)絡(luò)傳輸有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
本文名稱(chēng):Java中怎么利用Socket實(shí)現(xiàn)網(wǎng)絡(luò)傳輸
文章地址:http://muchs.cn/article10/jpdjgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、微信公眾號(hào)、Google、做網(wǎng)站、虛擬主機(jī)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)