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()); }