UDP也需要現有Server端,然後再有Client端
阿新 • • 發佈:2018-08-05
信息 輸出流 oid nta tag pub 多余 parseint ati
UDP編程:
DatagramSocket(郵遞員):對應數據報的Socket概念,不需要創建兩個socket,不可使用輸入輸出流。
DatagramPacket(信件):數據包,是UDP下進行傳輸數據的單位,數據存放在字節數組中。
UDP也需要現有Server端,然後再有Client端。
兩端都是DatagramPacket(相當於電話的概念),需要NEW兩個DatagramPacket。
InetAddress:網址
這種信息傳輸方式相當於傳真,信息打包,在接受端準備紙。
模式:
發送端:Server:
DatagramPacket inDataPacket=new DatagramPacket ((msg,msg.length); InetAdress.getByName(ip),port);
接收端:
clientAddress=inDataPack.getAddress();//取得地址
clientPort=inDataPack.getPort();//取得端口號
datagramSocket.send; //Server
datagramSocket.accept; //Client
1 package TomTexts; 2 import java.io.*; 3 4 public class TomTexts_31 { 5 public static void main(String []args){ 6 byte b[]=new byte[10]; 7 String str; 8 int n=0; 9 double sum=0,d,avg; 10 System.out.print("要對幾個數求平均?"); 11 try{ System.in.read(b); 12 str=new String(b).trim(); //去除多余的/r、/n、空格符 13 n=Integer.parseInt(str); 14 } 15 catch(IOException e){ 16 System.out.println(e.toString());17 } 18 catch(NumberFormatException e){ 19 System.out.println("請不要輸入0-9以外的其他字符!"); 20 System.exit(-1); //程序異常結束 21 } 22 for(int i=1;i<=n;i++){ 23 System.out.print(i+": "); 24 try{ System.in.read(b); 25 str=new String(b); 26 Double x=new Double(str); 27 d=x.doubleValue(); 28 sum+=d; 29 } 30 catch(IOException e){ 31 System.out.println(e.toString()); 32 } 33 catch(NumberFormatException e){ 34 i--; //重新輸入 35 System.out.println("請正確輸入實數!"); 36 } 37 } 38 System.out.println("平均值="+sum/n); 39 } 40 }
UDP也需要現有Server端,然後再有Client端