UDP程式設計之實現接收端與傳送端的持續通訊

2021-10-06 00:23:54 字數 3320 閱讀 3293

1.udp程式設計步驟:

1>傳送端

2>接收端

2.此blog實現的功能:傳送端不斷傳送,接收端不斷接收【測試手動輸入,螢幕輸出】

3.思路:* 從system.in中讀取,將位元組陣列傳送;*

1)方法一:傳送端–>直接用bufferedinputstream從位元組流system.in中讀取bufferedinputstream is=new bufferedinputstream(system.in);,放到buf位元組陣列中,is.read(buf)注意bufferedinputstream不會丟棄\r\n;

缺點,is.read(buf),buf的大小不好確定

2)方法二:傳送端–>將位元組流system.in轉成字元流【方便讀取一整行】進行讀取bufferedreader is=new bufferedreader(new inputstreamreader(system.in));,傳送時通過將字串轉成位元組陣列傳送注意bufferedreader會丟棄\r\n;

缺點,第一次將位元組流轉成字元流,第二次將字串轉成位元組傳送

注意:因為是否會丟棄\r\n,故兩種方法有些許不同【關於輸出是否要丟棄\r\n】;

four、方法一:

注意:判斷何時離開時使用了!s.equals("exit")而自己輸入"exit"時,會回車,故還會加入"\r\n",因此s=new string(buf,0,len-2);//因為\r\n也都進去了

注意2:小技巧,輸入「exit」後,先將它傳送到接收端後,再退出,使得接收端便於判斷何時退出

string s="";

while

(!s.

equals

("exit"))

1)傳送端完整**:

/*

*測試手動輸入,螢幕輸出 ;從system.in讀取,將位元組陣列傳送;

方法一:bufferedinputstream is=new bufferedinputstream(system.in);

缺點,is.read(buf),buf的大小不好確定

方法二:bufferedreader is=new bufferedreader(new inputstreamreader(system.in));

缺點,第一次將位元組流轉成字元流,第二次將字串轉成位元組傳送

//此文字下面的**可以不看

傳送端:先讀取【用bufferedinputstream(system.in)讀取,每回讀取多大?,或者說,用bufferedreader,每回讀取一行,但需要轉換流將位元組流system.in轉成字元流】,再寫入到位元組陣列中【用bytearrayoutputstream,直接寫入到位元組陣列,方便,快捷】

原因,因為本來就用轉換成位元組陣列,故用位元組流,加上緩衝後更快,故bufferedinputstream

可以用bufferedoutputstream包裝乙個fileoutputstream,不過while迴圈,反覆讀取,陣列大小,也不好定

*//**

* 1.使用datagramsocket

* 2.準備資料

* 3.封裝成datagrampacket包裹,需指定目的地

* 4.釋放資源 若是多執行緒,則最後釋放資源

* @author dell

* */

public

class

testudpclientsystemin05

釋放system.out.

println

("傳送成功");

//* 4.釋放資源 若是多執行緒,則最後釋放資源

ds.close()

;}}

2)接收端完整**

//測試手動輸入,螢幕輸出

/** * 1.使用datagramsocket

* 2.準備容器 封裝成datagrampacket包裹

* 3.阻塞式接收包裹

* 4.分析資料

* 5.釋放資源 若是多執行緒,則最後釋放資源

* @author dell

* */

public

class

testudpserversystemin05

//4.分析資料

// system.out.println(dp.getlength());

// system.out.println(new string(buf,0,dp.getlength()));

system.out.

println

("接收完畢");

//5.釋放資源 若是多執行緒,則最後釋放資源

ds.close()

;}}

接收端也可以這樣,使用bufferedoutputstream bos=new bufferedoutputstream(system.out);

注:上面的接收端使用的是system.out.println(str);

public

class

testudpserversystemin05

//4.分析資料

// system.out.println(dp.getlength());

// system.out.println(new string(buf,0,dp.getlength()));

system.out.

println

("接收完畢");

//5.釋放資源 若是多執行緒,則最後釋放資源

ds.close()

;}}

four、方法二:接收端:

public

class

udpservertalk

}// * 5.釋放

ds.close()

; system.out.

println

("接收完畢。");

}}

傳送端:

public

class

udpclienttalk

}// * 5.釋放

ds.close()

; system.out.

println

("傳送完畢。");

}}

UDP通訊 聊天示例(接收端 傳送端)

1 傳送send 2 接收端receive 3 接收方獲取ip和埠號 4 傳送端 實現 public static void main string args throws exception5 接收端 實現 public static void main string args throws ex...

udp廣播傳送端與接收端demon 超詳細注釋

udp廣播收發經典demon,超詳細注釋 1 傳送端 demon 廣播傳送端 author 樂樂 include include include include include include define port 19999 埠號 define maxdatasize 256 intmain 傳...

客戶端與服務端傳送檔案的簡單實現

服務端實現 public class fileupload server 4.資訊回寫 system.out.println back outputstream out accept.getoutputstream out.write 上傳成功 getbytes out.close 5.關閉 資源 ...