(一)Android 兩部手機(jī)通過UDP在局域網(wǎng)內(nèi)通信

最近學(xué)習(xí)了一下socket通信相關(guān)的知識画株,決定從UDP進(jìn)行文字傳輸開始做起赎懦。華為手機(jī)效果如圖:

?

我的另一部是小米手機(jī):網(wǎng)絡(luò)IP為192.168.1.118 就不截圖了,這部華為手機(jī)IP為192.168.1.102袒哥,注意上面填寫的IP為接收方的IP而不是自己的IP

點擊發(fā)送按鈕韵丑,開始發(fā)送消息:

private DatagramSocket sendSocket = null;

private int sendPort = 8856;

private void sendMsg() {

? ? try {

? ? ? ? if (sendSocket == null) {

? ? ? ? ? ? sendSocket = new DatagramSocket(sendPort);

? ? ? ? }

? ? ? ? InetAddress inetAddress = InetAddress.getByName(tvReceiveIp.getText().toString());

? ? ? ? byte[] bytes = tvServiceMsg.getText().toString().getBytes();

? ? ? ? DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, inetAddress, receivePort);

? ? ? ? sendSocket.send(datagramPacket);

? ? ? ? mHandler.sendEmptyMessage(0);

? ? ? ? System.out.println("MainActivity = " + "發(fā)送成功");

? ? ? ? isRunning = true;

? ? } catch (SocketException e) {

? ? ? ? e.printStackTrace();

? ? } catch (UnknownHostException e) {

? ? ? ? e.printStackTrace();

? ? } catch (IOException e) {

? ? ? ? e.printStackTrace();

? ? }

}

?

private DatagramSocket sendSocket = null;

private int sendPort = 8856;

private void sendMsg() {

? ? try {

? ? ? ? if (sendSocket == null) {

? ? ? ? ? ? sendSocket = new DatagramSocket(sendPort);

? ? ? ? }

? ? ? ? InetAddress inetAddress = InetAddress.getByName(tvReceiveIp.getText().toString());

? ? ? ? byte[] bytes = tvServiceMsg.getText().toString().getBytes();

? ? ? ? DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, inetAddress, receivePort);

? ? ? ? sendSocket.send(datagramPacket);

? ? ? ? mHandler.sendEmptyMessage(0);

? ? ? ? System.out.println("MainActivity = " + "發(fā)送成功");

? ? ? ? isRunning = true;

? ? } catch (SocketException e) {

? ? ? ? e.printStackTrace();

? ? } catch (UnknownHostException e) {

? ? ? ? e.printStackTrace();

? ? } catch (IOException e) {

? ? ? ? e.printStackTrace();

? ? }

}

另一部手機(jī)點擊接收,開始接收:

private DatagramSocket receiveSocket = null;

private int receivePort = 8855;

DatagramPacket datagramPacket;

private void receiveMsg() {

? ? try {

? ? ? ? while (isRunning) {

? ? ? ? ? ? if (receiveSocket == null) {

? ? ? ? ? ? ? ? receiveSocket = new DatagramSocket(receivePort);

? ? ? ? ? ? }

? ? ? ? ? ? byte[] bytes = new byte[1024];

? ? ? ? ? ? datagramPacket= new DatagramPacket(bytes, 0, bytes.length);

? ? ? ? ? ? receiveSocket.receive(datagramPacket);

? ? ? ? ? ? mHandler.sendEmptyMessage(1);

? ? ? ? ? ? System.out.println("Main2Activity接收成功 = " + new String(datagramPacket.getData()));

? ? ? ? }

? ? } catch (SocketException e) {

? ? ? ? e.printStackTrace();

? ? } catch (IOException e) {

? ? ? ? e.printStackTrace();

? ? }

}

發(fā)送和接收到的消息通知主線程刷新:

Handler mHandler = new Handler() {

? ? @Override

? ? public void handleMessage(Message msg) {

? ? ? ? super.handleMessage(msg);

? ? ? ? switch (msg.what) {

? ? ? ? ? ? case 0:

? ? ? ? ? ? ? ? creatMessageBean(tvServiceMsg.getText().toString(), true);

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case 1:

? ? ? ? ? ? ? ? creatMessageBean(new String(datagramPacket.getData()), false);

? ? ? ? ? ? ? ? break;

? ? ? ? }

? ? }

};

private void creatMessageBean(String msg, boolean isSend) {

? ? MessageBean messageBean = new MessageBean(msg, isSend);

? ? mAdapter.setData(messageBean);

}

這樣一個簡單的通信demo就完成了导帝,當(dāng)然在demo中我沒有做嚴(yán)謹(jǐn)?shù)男r炇匚剑皇菫榱藢崿F(xiàn)整個流程

demo下載地址為:點擊打開鏈接

因為此系列的目的是實現(xiàn)音頻的傳輸,所以下一篇會先研究音頻的錄制您单。

公眾號:自學(xué)編程聯(lián)盟

?

另外斋荞,本人還有一個京東淘寶天貓福利群,歡迎大家加入芭扒亍平酿!可先加我私人微信


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讯檐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子染服,更是在濱河造成了極大的恐慌别洪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柳刮,死亡現(xiàn)場離奇詭異挖垛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秉颗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門痢毒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚕甥,你說我怎么就攤上這事哪替。” “怎么了菇怀?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵凭舶,是天一觀的道長。 經(jīng)常有香客問我爱沟,道長帅霜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任呼伸,我火速辦了婚禮身冀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘括享。我一直安慰自己搂根,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布铃辖。 她就那樣靜靜地躺著剩愧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澳叉。 梳的紋絲不亂的頭發(fā)上隙咸,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音成洗,去河邊找鬼五督。 笑死,一個胖子當(dāng)著我的面吹牛瓶殃,可吹牛的內(nèi)容都是我干的充包。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼基矮!你這毒婦竟也來了淆储?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤家浇,失蹤者是張志新(化名)和其女友劉穎本砰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钢悲,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡点额,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了莺琳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片还棱。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惭等,靈堂內(nèi)的尸體忽然破棺而出珍手,到底是詐尸還是另有隱情,我是刑警寧澤辞做,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布琳要,位于F島的核電站,受9級特大地震影響凭豪,放射性物質(zhì)發(fā)生泄漏焙蹭。R本人自食惡果不足惜晒杈,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一嫂伞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拯钻,春花似錦帖努、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亩歹,卻和暖如春匙监,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背小作。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工亭姥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人顾稀。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓达罗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親静秆。 傳聞我的和親對象是個殘疾皇子粮揉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容