基於UDP的網路程式設計實現簡單聊天室
阿新 • • 發佈:2018-12-29
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; public class Sender { public static void main(String[] args) { DatagramSocket ds=null; try { //建立DataGramSocket物件,制定傳送方的埠號 System.out.println("同學上線了"); ds = new DatagramSocket(8888); while(true) { //將同學的輸入轉成位元組陣列 Scanner sc=new Scanner(System.in); System.out.print("學生:"); String str=sc.next(); byte [] a=str.getBytes(); //建立一個數據包,用該資料包包裹同學資訊傳送給接受者諮詢老師 DatagramPacket dp=new DatagramPacket(a, a.length, InetAddress.getByName("192.168.51.179"), 10001); ds.send(dp); //準備一個空的資料包,用來接收資料 byte[] b=new byte[1024]; DatagramPacket dp1=new DatagramPacket(b, b.length); ds.receive(dp1); System.out.println("諮詢老師:"+new String(dp1.getData(),0,dp1.getLength())); } } catch (IOException e) { e.printStackTrace(); }finally { //關閉 ds.close(); } } }
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; public class Receiver { public static void main(String[] args) { DatagramSocket ds=null; try { //建立DataGramSocket物件,制定接受方的埠號 System.out.println("諮詢老師上線了"); ds = new DatagramSocket(10001); while(true) { //準備一個空的資料包,用來接收資料 byte [] a=new byte[1024]; DatagramPacket dp=new DatagramPacket(a, a.length); //接受資料,存放在資料包中 ds.receive(dp); /* * dp.getData()得到的是一個位元組陣列,我要展示的話就要將位元組陣列轉為字串. * 通過後兩個引數控制輸出的長度 */ System.out.println("同學:"+new String(dp.getData(),0,dp.getLength())); //將老師輸入轉成位元組陣列 Scanner sc=new Scanner(System.in); System.out.print("諮詢老師:"); String str=sc.next(); byte [] b=str.getBytes(); //建立一個數據包,用該資料包包裹同學資訊傳送給接受者諮詢老師 DatagramPacket dp1=new DatagramPacket(b, b.length, InetAddress.getByName("192.168.51.179"), 8888); ds.send(dp1); } } catch ( IOException e) { e.printStackTrace(); }finally { ds.close(); } } }
執行效果:
諮詢老師上線了
同學:老師,我想學java
諮詢老師:同學,你有基礎嗎
同學:沒有呢,零基礎可以學嗎
諮詢老師:可以呢
同學:那學費是多少呢
諮詢老師:19998,可以接受嗎
同學:有點小貴
諮詢老師:
同學上線了
學生:老師,我想學java
諮詢老師:同學,你有基礎嗎
學生:沒有呢,零基礎可以學嗎
諮詢老師:可以呢
學生:那學費是多少呢
諮詢老師:19998,可以接受嗎
學生:有點小貴
-------------------------------------------------------------------------------------------------------------------------------------------
以上聊天無法結束,可以加入一個if判斷,當學生輸入再見,結束對話。