1. 程式人生 > >Java學習day26-網路通訊

Java學習day26-網路通訊

1.Socket機制
               A:通訊兩端都應該有Socket物件
B:所有的通訊都是通過Socket間的IO進行操作的
2.Socket通訊原理圖解

3.UDP協議下發送接收資料
傳送:
建立UDP傳送端的Socket物件
                          DatagramSocket ds = new DatagramSocket();
建立資料並把資料打包
                 byte[] bys = "hello,udp,我來了".getBytes();
// 長度
int length = bys.length;
// IP地址物件
InetAddress address = InetAddress.getByName("192.168.12.92");
// 埠
int port = 10086;
DatagramPacket dp = new DatagramPacket(bys, length, address, port);
傳送資料
                ds.send(dp);
釋放資源
ds.close()
接收:
建立UDP接收端的Socket物件
                DatagramSocket ds = new DatagramSocket(10086);
建立資料包用於接收資料
                 byte[] bys = new byte[1024];
int length = bys.length;
DatagramPacket dp = new DatagramPacket(bys, length);
接收資料
              ds.receive(dp); // 阻塞式
解析資料包
              // public InetAddress getAddress()
InetAddress address = dp.getAddress();
String ip = address.getHostAddress();
// public byte[] getData():獲取資料緩衝區
// public int getLength():獲取資料的實際長度
byte[] bys2 = dp.getData();
int len = dp.getLength();
String s = new String(bys2, 0, len);
System.out.println(ip + "傳遞的資料是:" + s);
釋放資源
               ds.close();
4.TCP協議下發送接收資料
傳送:
建立TCP客戶端的Socket物件
                   Socket s = new Socket("192.168.12.92", 8888);
獲取輸出流,寫資料
OutputStream os = s.getOutputStream();
os.write("hello,tcp,我來了".getBytes());
釋放資源
s.close()
接收:
建立TCP伺服器端的Socket物件
                  ServerSocket ss = new ServerSocket(8888);

監聽客戶端連線

                  Socket s = ss.accept();

獲取輸入流,讀取資料
                    InputStream is = s.getInputStream();


byte[] bys = new byte[1024];
int len = is.read(bys); // 阻塞式方法
String str = new String(bys, 0, len);


String ip = s.getInetAddress().getHostAddress();


System.out.println(ip + "---" + str);

釋放資源

                s.close()