您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java 中怎么利用Socket實現網絡傳輸,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
采用Java Socket網絡傳輸的序列化機制,將對象“壓扁”成二進制字節,將二進制字節在網絡中傳輸;
自定義協議,將對象用字符串描述出來,將字符串用二進制表示,在網絡中傳輸,在另外一邊用相反的策略解析這個字符串,重新構造業務對象,這個方法能夠在異構平臺中進行傳輸而不變形,但是需要額外的編寫“壓扁”和“充氣”的代碼;
我們這里用***種方法:
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();
//在網絡中進行傳輸
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();
}
}
}
其中服務端代碼片段為:
in = this.getRequestSocket().getInputStream(); out = this.getRequestSocket().getOutputStream(); byte[] bs = Persistence.toBytes(); System.out.println("發送數字長度:"+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實現網絡傳輸有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。