1.概念:編程
1.網絡編程從大的方面說就是對信息的發送到接收,中間傳輸爲物理線路的做用,編程人員能夠不用考慮服務器
2.網絡編程最主要的工做就是在發送端把信息經過規定好的協議進行組裝包,網絡
在接收端按照規定好的協議把包進行解析,從而提取出對應的信息,達到通訊的目的!測試
中間最主要的就是數據包的組裝,數據包的過濾,數據包的捕獲,數據包的分析,固然最後再作一些處理!spa
2.網絡編程三要素:code
1:IP地址 對象
2:端口 blog
3:協議ip
3.IP地址 = 網絡地址 +主機地址get
網絡地址:標識計算機或網絡設備所在的網段
主機地址:標識特定主機或網絡設備
查看本機的IP地址 ipconfig
測試網絡是否通暢 ping + IP地址
4.網絡通訊協議
爲在網絡中不一樣的計算機之間進行通訊而創建的規則、標準或約定的集合
1.TCP協議(Transmission Control Protocol 傳輸控制協議)
面向鏈接的、可靠的、基於字節流的傳輸通訊協議
2.UDP協議(User Datagram Protocol 用戶數據報協議)
無鏈接的協議,在傳輸數據以前,客戶端和服務器並不創建和維護鏈接
UDP協議的Socket網絡編程步驟:
1.利用 DatagramPacket 對象封裝數據報
2.利用 DatagramSocket 發送數據報
3利用 DatagramSocket 接收數據報
4利用 DatagramPacket 處理數據報
基於UDP協議的Socket網絡通訊
DatagramSocket ds=new DatagramSocket(1086); byte[] bys = new byte[1024]; int len = bys.length; DatagramPacket dp = new DatagramPacket(bys, len); ds.receive(dp); byte[] by = dp.getData(); int length = dp.getLength(); InetAddress address = dp.getAddress(); String ip = address.getHostAddress(); String s = new String(by, 0, length); System.out.println(ip + "---" + s); ds.close();
DatagramSocket ds=new DatagramSocket(); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); byte [] bys="aaa".getBytes(); int num=bys.length; InetAddress address=InetAddress.getByName("192.168.60.7"); int port=1086; DatagramPacket dp=new DatagramPacket(bys,num, address,port); ds.send(dp); ds.close();
基於TCP協議的Socket網絡通訊
Socket sk=new Socket("192.168.60.7",20004); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())); String line=null; while((line=br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); InputStream is=sk.getInputStream(); byte [] by=new byte[1024]; int num=is.read(by); String h=new String(by, 0, num); System.out.println("Service:\t"+h); } //br.close(); //bw.close(); sk.close();
ServerSocket sk=new ServerSocket(20004); Socket s=sk.accept(); BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); BufferedReader bw=new BufferedReader(new InputStreamReader(System.in)); OutputStream os=s.getOutputStream(); String line=null; while((line=br.readLine())!=null){ System.out.println("Client \t"+line); os.write(bw.readLine().getBytes()); }