有两种类型
IP的分类 (ABCD类)
生活例子:打电话
特性 :连接 稳定
流程
代码例子
class A{ public static void main(String[] args){ //创建socket连接 参数为 ip 和 port Socket socket = new Socket(InetAddress.getByName("0.0.0.0"),port); //socket连接成功不报错,可以获取输出流回应服务端 OutputStream os = socket.getOutputStream(); //写入数据 os.write("hello world".getBytes()); //结束输出 socket.shutdownOutput(); //后续结束连接关闭服务 os.close(); socket.close(); } }
class b{ public static void main(String[] args){ //创建服务器的socket 并开放其端口号 ServerSocket socket = new ServerSocket(port); //通过服务器的socket监听发过来的连接请求 (阻塞连接) Socket accept = socket.accept(); //连接成功接收客户端发来的数据 InputStream is = accept.getInputStream(); //I/O读写数据 byte[] buffer = new byte[1024]; int len = 0; //因不知道数据类型,用管道流接收 ByteArrayOutputStream baos = new ByteArrayOutputStream(); while((len=is.read(buffer))!= -1){ baos.write(buffer,0,len); } System.out.print(baos.toString()); } }
生活例子:发短信
特性:不稳定 单方面
流程:
代码例子
class A{ public static void main(String[] args){ //创建DatagramSocket进行发送 DatagramSocket socket = new DatagramSocket(); //发送需要的内容 参数需要 数据字节数组 数组偏移量 数组长度 IP 端口 byte[] buffer = "hello world".getBytes(); DatagramPacket packet = new DatamgramPacket(buffer,0,buffer.length,InetAddress.getByName("0.0.0.0"),port); //发送 socket.send(packet); } }
class B{ public static void main(String[] args){ //创建DatagramSocket连接 ,并开放其端口 DatagramSocket socket = new DatagramSocket(port); //需要接收内容的驿站 byte[] buffer = new byte[1024]; DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length); //接收 socket.receive(packet); //输出其信息 byte[] data = packet.getData(); System.out.print(new String(data,0,data.length)) } }
//如:利用url下载网上的资源 Url url = new Url(定位的格式); //调用url的连接方法获取输入流 HttpURLConnection connection = (HttpURLConnection)url.openConnection(); InputStream fis = connection.getInputStream(); //利用IO输出即可