java.net包中J2SE的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。
java.net包中提供了两种常见的网络协议的支持:
UDP
面向无连接,数据不安全,速度快。不区分客户端与服务端。
TCP
面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。
1.4 Socket
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。
1.5 网络模型
2. UDP传输
2.1 发送
创建DatagramSocket
创建DatagramPacket
使用DatagramSocket发送DatagramPacket
关闭DatagramSocket
1 2 3 4 5 6 7 8 9 10 11 12 13
//发送端 public class UdpTalkClient { public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(8989); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in)); String s = bufferedReader.readLine(); byte[] bytes=s.getBytes(); DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length,new InetSocketAddress("localhost",6666));
socket.send(datagramPacket); socket.close(); } }
2.2 接收
创建DatagramSocket
创建DatagramPacket
使用DatagramSocket接收DatagramPacket
关闭DatagramSocket
1 2 3 4 5 6 7 8 9 10 11
public class UdpTalkServer { public static void main(String[] args) throws Exception { DatagramSocket datagramSocket = new DatagramSocket(6666); byte[] bytes=new byte[1024*60]; DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length); datagramSocket.receive(packet); byte[] data = packet.getData();