欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天功能

 更新時(shí)間:2022年05月19日 16:47:26   作者:xouou_53320  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天功能,使用UDP模式編寫(xiě)一個(gè)聊天程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java使用UDP模式編寫(xiě)聊天程序的具體代碼,供大家參考,具體內(nèi)容如下

Java代碼:

/* 
使用UDP模式,編寫(xiě)一個(gè)聊天程序 
有發(fā)送和接收數(shù)據(jù)2部分, 
一個(gè)線程接收,一個(gè)線程發(fā)送 
 
由于發(fā)送和接收動(dòng)作是不一致的,所以要使用2個(gè)run方法 
而且這兩個(gè)方法要封裝到不同的類中 
 
本程序忽略了部分異常的處理,也未加入U(xiǎn)I組件 
這樣比較簡(jiǎn)潔 
 
發(fā)送端口9998 
接受端口9999 
用的是局域網(wǎng)廣播地址,所以自己發(fā)的消息自己也收到了 
 
[示例]:簡(jiǎn)易控制臺(tái)聊天程序 
*/ 
import java.net.*; 
import java.io.*; 
class Demo 
{ 
 public static void main(String[] args) throws Exception 
 { 
  DatagramSocket sendSocket = new DatagramSocket(9998); //發(fā)送端 
  DatagramSocket receSocket = new DatagramSocket(9999); //接收端 
  new Thread(new MsgSend(sendSocket)).start();      //發(fā)送線程 
  new Thread(new MsgRece(receSocket)).start();      //接受線程 
 } 
} 
 
class MsgSend implements Runnable   //發(fā)送 
{ 
 private DatagramSocket dsock; 
 public MsgSend(DatagramSocket dsock) 
 { 
  this.dsock= dsock; 
 } 
 
 public void run() 
 { 
  BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); 
  String lineStr = null; 
  try 
  {     
   while(true) 
   { 
    lineStr = bufr.readLine(); 
    if(lineStr!=null) 
    { 
     if(lineStr.equals("over886")) 
     { 
      break; 
     } 
     else 
     { 
      byte[] dataBuf = lineStr.getBytes(); 
      DatagramPacket dataPack =  //數(shù)據(jù)打包 
      new DatagramPacket( dataBuf, 
                dataBuf.length, 
                InetAddress.getByName("192.168.1.255"), //廣播 
                9999 //目標(biāo)端口 
               ); 
      dsock.send(dataPack); 
     } 
    } 
   } 
   bufr.close(); 
   dsock.close(); 
  } 
  catch(Exception e) 
  { 
   throw new RuntimeException("發(fā)送失敗!"); 
  } 
 } 
} 
 
class MsgRece implements Runnable  //接收 
{ 
 private DatagramSocket dsock; 
 public MsgRece(DatagramSocket dsock) 
 { 
  this.dsock= dsock; 
 } 
 
 public void run() 
 { 
  try 
  { 
   while(true) 
   { 
     byte[] dataBuf = new byte[1024]; 
     DatagramPacket dataPack = new DatagramPacket(dataBuf,dataBuf.length); 
     dsock.receive(dataPack); //將獲取的數(shù)據(jù)保存到指定的數(shù)據(jù)包 
     String ip = dataPack.getAddress().getHostAddress(); 
     String data = new String(dataPack.getData(),0,dataPack.getLength()); 
     int port = dataPack.getPort(); 
     System.out.println();  
     System.out.println("來(lái)自ip為 "+ip+" <對(duì)方端口>: "+port+" 的消息"); 
     System.out.println(data);     
   } 
  } 
  catch(Exception e) 
  { 
   throw new RuntimeException("接受失敗!"); 
  } 
  finally 
  { 
   dsock.close(); 
  } 
 } 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java避免多層嵌套循環(huán)用到的一些小技巧分享

    java避免多層嵌套循環(huán)用到的一些小技巧分享

    這篇文章主要介紹了java避免多層嵌套循環(huán)用到的一些小技巧分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java實(shí)現(xiàn)視頻初步壓縮和解壓的代碼示例

    Java實(shí)現(xiàn)視頻初步壓縮和解壓的代碼示例

    從攝像頭讀取每一幀的圖片,用一些簡(jiǎn)單的方法將多張圖片信息壓縮到一份文件中(自定義的視頻文件),自定義解碼器讀取視頻文件,并將每幀圖片展示成視頻,本文主要介紹了Java實(shí)現(xiàn)視頻初步壓縮和解壓,需要的朋友可以參考下
    2023-10-10
  • java生成隨機(jī)數(shù)的方法

    java生成隨機(jī)數(shù)的方法

    這篇文章主要介紹了java生成隨機(jī)數(shù)的方法,涉及java隨機(jī)數(shù)及字符串操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲

    JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲

    這篇文章主要為大家詳細(xì)介紹了JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • springboot框架阿里開(kāi)源低代碼工具LowCodeEngine

    springboot框架阿里開(kāi)源低代碼工具LowCodeEngine

    這篇文章主要為大家介紹了springboot框架阿里開(kāi)源低代碼LowCodeEngine工具使用詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Java雙向鏈表的操作

    Java雙向鏈表的操作

    這篇文章主要介紹了Java雙向鏈表的操作,雙向鏈表,對(duì)于該鏈表中的任意節(jié)點(diǎn),既可以通過(guò)該節(jié)點(diǎn)向前遍歷,也可以通過(guò)該節(jié)點(diǎn)向后遍歷,雙向鏈表在實(shí)際工程中應(yīng)用非常廣泛,是使用鏈表這個(gè)結(jié)構(gòu)的首選
    2022-06-06
  • 手?jǐn)]一個(gè)Spring?Boot?Starter并上傳到Maven中央倉(cāng)庫(kù)

    手?jǐn)]一個(gè)Spring?Boot?Starter并上傳到Maven中央倉(cāng)庫(kù)

    本文主要介紹了手?jǐn)]一個(gè)Spring?Boot?Starter并上傳到Maven中央倉(cāng)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • MyBatis深入分析數(shù)據(jù)庫(kù)交互與關(guān)系映射

    MyBatis深入分析數(shù)據(jù)庫(kù)交互與關(guān)系映射

    這篇文章主要介紹了MyBatis中的數(shù)據(jù)庫(kù)交互與關(guān)系映射,MyBatis是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲(chǔ)過(guò)程以及高級(jí)映射,MyBatis避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集,需要的朋友可以參考下
    2024-05-05
  • Jmeter基于JDBC請(qǐng)求實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)測(cè)試

    Jmeter基于JDBC請(qǐng)求實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)測(cè)試

    這篇文章主要介紹了Jmeter基于JDBC請(qǐng)求實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 通過(guò)java api實(shí)現(xiàn)解壓縮zip示例

    通過(guò)java api實(shí)現(xiàn)解壓縮zip示例

    這篇文章主要介紹了通過(guò)java api實(shí)現(xiàn)解壓縮zip示例,需要的朋友可以參考下
    2014-04-04

最新評(píng)論