• 网络编程


    1: 测试IP

     1 package Net;
     2 
     3 import java.net.InetAddress;
     4 import java.net.UnknownHostException;
     5 
     6 /**
     7  * author liulei
     8  * data  5.26
     9  * since 1.8
    10  * version 1.0
    11  * Description  测试IP
    12  */
    13 public class Test1 {
    14     public static void main(String[] args) throws UnknownHostException {
    15         //查询本机地址
    16         InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
    17         System.out.println(inetAddress);///127.0.0.1
    18         InetAddress localhost = InetAddress.getByName("localhost");
    19         System.out.println(localhost);//localhost/127.0.0.1
    20         InetAddress localHost1 = InetAddress.getLocalHost();
    21         System.out.println(localHost1);//DESKTOP-PAIHBK9/169.254.192.87
    22         //查询网络ip地址
    23         InetAddress byName = InetAddress.getByName("www.baidu.com");
    24         System.out.println(byName);//域名+ip
    25         //常用方法
    26         System.out.println(byName.getHostName());//域名
    27         System.out.println(byName.getHostAddress());//ip
    28         System.out.println(byName.getCanonicalHostName());//规范的名字
    29         System.out.println(byName.getAddress());//[B@7f31245a
    30         System.out.println(byName.getClass());//inetadress对象
    31     }
    32 }

    2:测试端口

     1 package Net;
     2 
     3 import java.net.InetSocketAddress;
     4 
     5 /**
     6  * author liulei
     7  * data   5.26
     8  * since 1.8
     9  * version 1.0
    10  * Description    测试端口
    11  */
    12 public class Test2 {
    13     public static void main(String[] args) {
    14         InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1",8080);
    15         InetSocketAddress s = new InetSocketAddress("localhost",8080);
    16         System.out.println(inetSocketAddress);
    17         System.out.println(s);
    18         System.out.println(inetSocketAddress.getAddress());
    19         System.out.println(inetSocketAddress.getHostName());//ip
    20         System.out.println(inetSocketAddress.getPort());//端口
    21 
    22 
    23     }
    24 }

    3:TCP

    使用TCP进行发送消息

     1 package Net;
     2 
     3 import java.io.IOException;
     4 import java.io.OutputStream;
     5 import java.net.InetAddress;
     6 import java.net.InetSocketAddress;
     7 import java.net.Socket;
     8 
     9 /**
    10  * author liulei
    11  * data  5.26
    12  * since 1.8
    13  * version 1.0
    14  * Description  客户端
    15  */
    16 public class Test31 {
    17     public static void main(String[] args) throws IOException {
    18         //1要知道服务器端的端口号和ip
    19         InetAddress serverIp = InetAddress.getByName("127.0.0.1");
    20         int port = 9999;
    21         //2创建一个socket连接
    22         Socket socket = new Socket(serverIp,port);
    23         OutputStream outputStream = socket.getOutputStream();
    24         //发送消息IO流
    25         outputStream.write("你好,欢迎学习狂神说java".getBytes());
    26         outputStream.close();
    27         socket.close();
    28 
    29     }
    30 }
    客户端
     1 package Net;
     2 
     3 import java.io.ByteArrayOutputStream;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.net.ServerSocket;
     7 import java.net.Socket;
     8 
     9 /**
    10  * author liulei
    11  * data  5.26
    12  * since 1.8
    13  * version 1.0
    14  * Description  服务端
    15  */
    16 public class Test32 {
    17     public static void main(String[] args) throws IOException {
    18         ServerSocket serverSocket = null;
    19         Socket socket = null;
    20         InputStream inputStream = null;
    21         ByteArrayOutputStream baos = null;
    22 
    23         try {
    24             //先有一个地址
    25             serverSocket = new ServerSocket(9999);
    26             while (true){
    27                 //等待客户端连过来
    28                 socket = serverSocket.accept();
    29                 //读取客户端的信息
    30                 inputStream = socket.getInputStream();
    31                 byte[] buffer = new byte[1024];
    32                baos = new ByteArrayOutputStream();//管道流方法
    33                 int len;
    34                 while((len = inputStream.read(buffer))!=-1){
    35                     //这种方法可能因为乱码出现错误
    36                     //String str=new String(buffer,0,len);
    37                     //System.out.println(str);
    38                     baos.write(buffer,0,len);//使用管道流方法接受信息
    39 
    40                 }
    41                 System.out.println(baos.toString());
    42             }
    43         }catch (Exception e){
    44             e.printStackTrace();
    45         }
    46         finally {
    47             if(baos != null){
    48                 baos.close();
    49             }
    50             if(inputStream != null){
    51                 inputStream.close();
    52             }
    53             if(socket != null){
    54                 socket.close();
    55             }
    56             if(serverSocket != null){
    57                 serverSocket.close();
    58             }
    59         }
    60     }
    61 }
    服务器端

    使用TCP进行文件的发送

     1 package Net;
     2 
     3 import java.io.*;
     4 import java.net.InetAddress;
     5 import java.net.Socket;
     6 
     7 /**
     8  * author liulei
     9  * data
    10  * since 1.8
    11  * version 1.0
    12  * Description  TCp客户端进行发送图片
    13  */
    14 public class Test41 {
    15     public static void main(String[] args) throws Exception{
    16         //创建一个socket连接
    17         Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9999);
    18         //创建一个输出流
    19         OutputStream os = socket.getOutputStream();
    20         //读取文件
    21         FileInputStream fis = new FileInputStream(new File("a.png"));
    22         byte[] buffer = new byte[1024];
    23         int len;
    24         while ((len  = fis.read(buffer))!=-1){
    25             os.write(buffer,0,len);
    26         }
    27         socket.shutdownOutput();//通知服务器我已经发送完毕,不需要继续监听堵塞了
    28         //确定服务器接受完毕才可以断开连接
    29         InputStream stream = socket.getInputStream();
    30         byte[] buffer1 = new byte[1024];
    31         ByteArrayOutputStream baos = new ByteArrayOutputStream();
    32         int len1;
    33         while ((len1 = stream.read(buffer1))!=-1){
    34             baos.write(buffer1,0,len1);
    35         }
    36         System.out.println(baos.toString());
    37         //关闭资源
    38         baos.close();
    39         fis.close();
    40         os.close();
    41         socket.close();
    42     }
    43 }
    TCp客户端进行发送图片
     1 package Net;
     2 
     3 import java.io.*;
     4 import java.net.ServerSocket;
     5 import java.net.Socket;
     6 
     7 /**
     8  * author liulei
     9  * data
    10  * since 1.8
    11  * version 1.0
    12  * Description tcp文件上传服务端
    13  */
    14 public class Test42 {
    15     public static void main(String[] args) throws IOException {
    16         //先指明自己的端口号
    17         ServerSocket serverSocket = new ServerSocket(9999);
    18         Socket accept = serverSocket.accept();//获取一个socket对象
    19         InputStream inputStream = accept.getInputStream();//输入流对象
    20         FileOutputStream fos = new FileOutputStream(new File("b.jpg"));//文件输出流,把文件输出到本地
    21         byte[] buffer = new byte[1024];
    22         int len;
    23         while ((len = inputStream.read(buffer))!=-1){
    24             fos.write(buffer,0,len);
    25         }
    26         //通知客户端接受完毕
    27         OutputStream os = accept.getOutputStream();
    28         os.write("我读到了你的信息,你可以断开了".getBytes());
    29         //关闭资源
    30         os.close();
    31         fos.close();
    32         inputStream.close();
    33         serverSocket.close();
    34     }
    35 }
    tcp文件上传服务端

    4:UDP

     1 package Net;
     2 
     3 import java.io.IOException;
     4 import java.net.*;
     5 
     6 /**
     7  * author liulei
     8  * data   5.27
     9  * since 1.8
    10  * version 1.0
    11  * Description  udp客户端(简单udp通信的例子)
    12  */
    13 public class Test51 {//不需要连接服务器
    14     public static void main(String[] args) throws IOException {
    15         //建立一个socket
    16         DatagramSocket socket = new DatagramSocket(8888);
    17         //建个包
    18         String msg = "111你好啊11111";
    19         InetAddress localhost = InetAddress.getByName("localhost");
    20         int port = 9090;
    21         //数据,数据的长度,数据发给谁
    22         DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.length(),localhost,port);
    23         //发送包,
    24         socket.send(packet);
    25         //关闭流
    26         socket.close();
    27     }
    28 }
    udp客户端(简单udp通信的例子)
     1 package Net;
     2 
     3 
     4 
     5 import java.net.DatagramPacket;
     6 import java.net.DatagramSocket;
     7 
     8 /**
     9  * author liulei
    10  * data   5.27
    11  * since 1.8
    12  * version 1.0
    13  * Description  udp服务器端(简单udp通信的例子)
    14  */
    15 public class Test52 {
    16     public static void main(String[] args) throws  Exception{
    17         //开放端口
    18         DatagramSocket socket = new DatagramSocket(9090);
    19         //接受数据包
    20         byte[] buffer = new byte[1024];
    21         DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
    22         socket.receive(packet);//堵塞接受
    23         System.out.println(packet.getAddress().getHostAddress());
    24         System.out.println(new String(packet.getData(),0,packet.getLength()));
    25         socket.close();//关闭连接
    26     }
    27 }
    udp服务器端(简单udp通信的例子)

    5: 使用UDP进行单向通信

     1 package Net;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.InputStreamReader;
     5 import java.net.DatagramPacket;
     6 import java.net.DatagramSocket;
     7 import java.net.InetSocketAddress;
     8 import java.net.SocketException;
     9 
    10 /**
    11  * author liulei
    12  * data 5.27
    13  * since 1.8
    14  * version 1.0
    15  * Description 基于udp的单方向聊天
    16  */
    17 public class Test61 {
    18     public static void main(String[] args) throws Exception {
    19         DatagramSocket socket = new DatagramSocket(8888);
    20       while (true){
    21           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    22           String data = br.readLine();
    23           byte[] datas = data.getBytes();
    24           DatagramPacket packet = new DatagramPacket(datas,0,datas.length,new InetSocketAddress("127.0.0.1",6666));
    25           socket.send(packet);
    26           if(data.equals("bye")){
    27               break;
    28           }
    29       }
    30         socket.close();
    31     }
    32 }
    View Code
     1 package Net;
     2 
     3 
     4 
     5 import java.io.IOException;
     6 import java.net.DatagramPacket;
     7 import java.net.DatagramSocket;
     8 import java.net.SocketException;
     9 
    10 /**
    11  * author liulei
    12  * data  5.27
    13  * since 1.8
    14  * version 1.0
    15  * Description  基于udp的单方向聊天
    16  */
    17 public class Test62 {
    18     public static void main(String[] args) throws IOException {
    19         DatagramSocket socket = new DatagramSocket(6666);
    20        while (true){
    21            byte[] data = new byte[1024];
    22            DatagramPacket packet = new DatagramPacket(data,0,data.length);
    23            socket.receive(packet);
    24            System.out.println(new String(packet.getData(),0,data.length));
    25            String stringreceive = new String(packet.getData(),0,data.length);
    26            if(stringreceive.equals("bye")){
    27                break;
    28            }
    29        }
    30         socket.close();
    31 
    32     }
    33 }
    View Code

    6: 使用UDP进行双向通信

     1 package Net;
     2 
     3 import java.io.BufferedInputStream;
     4 import java.io.BufferedReader;
     5 import java.io.IOException;
     6 import java.io.InputStreamReader;
     7 import java.net.DatagramPacket;
     8 import java.net.DatagramSocket;
     9 import java.net.InetSocketAddress;
    10 import java.net.SocketException;
    11 
    12 /**
    13  * author liulei
    14  * data 5.27
    15  * since 1.8
    16  * version 1.0
    17  * Description  发送端
    18  */
    19 public class Test71 implements Runnable{
    20     public static void main(String[] args) {
    21 
    22     }
    23     DatagramSocket socket = null;
    24     BufferedReader br = null;
    25     DatagramPacket packet = null;
    26     private String toIp;
    27     private  int toPort;
    28     private int fromPort;
    29 
    30     public Test71(int fromPort, int toPort, String toIp) throws Exception {
    31         this.toIp = toIp;
    32         this.toPort = toPort;
    33         this.fromPort = fromPort;
    34         socket = new DatagramSocket(fromPort);
    35         br = new BufferedReader(new InputStreamReader(System.in));
    36     }
    37 
    38     @Override
    39     public void run() {
    40         while (true){
    41             String data = null;
    42             try {
    43                 data = br.readLine();
    44 
    45                 byte[] datas = data.getBytes();
    46                 packet = new DatagramPacket(datas,0,datas.length,new InetSocketAddress(toIp,toPort));
    47                 socket.send(packet);
    48                 if(data.equals("bye")){
    49                     break;
    50                 }
    51             } catch (IOException e) {
    52                 e.printStackTrace();
    53             }
    54 
    55         }
    56         try {
    57             br.close();
    58             socket.close();
    59         } catch (IOException e) {
    60             e.printStackTrace();
    61         }
    62     }
    63 }
    发送端
     1 package Net;
     2 
     3 import java.io.IOException;
     4 import java.net.DatagramPacket;
     5 import java.net.DatagramSocket;
     6 import java.net.SocketException;
     7 
     8 /**
     9  * author liulei
    10  * data
    11  * since 1.8
    12  * version 1.0
    13  * Description 接收端
    14  */
    15 public class Test72 implements Runnable{
    16     DatagramSocket socket = null;
    17     private int port;
    18     private String msgfrom;
    19 
    20     public Test72(int port, String msgfrom) throws SocketException {
    21         this.port = port;
    22         this.msgfrom = msgfrom;
    23         socket = new DatagramSocket(port);
    24     }
    25 
    26     @Override
    27     public void run() {
    28 
    29         try {
    30 
    31             while (true){
    32                 byte[] data = new byte[1024];
    33                 DatagramPacket packet = new DatagramPacket(data,0,data.length);
    34                 socket.receive(packet);
    35                 String stringreceive = new String(packet.getData(),0,data.length);
    36                 System.out.println(msgfrom + ""+ stringreceive);
    37 
    38                 if(stringreceive.equals("bye")){
    39                     System.out.println(msgfrom + "断开连接");
    40                     break;
    41                 }
    42 
    43             }
    44             socket.close();
    45         } catch (IOException e) {
    46             e.printStackTrace();
    47         }
    48 
    49 
    50     }
    51 }
    接收端
     1 package Net;
     2 
     3 /**
     4  * author liulei
     5  * data 5.27
     6  * since 1.8
     7  * version 1.0
     8  * Description  用户一
     9  */
    10 public class Test73 {
    11     public static void main(String[] args) throws Exception {
    12         new Thread(new Test71(7777,9999,"localhost")).start();
    13         new Thread(new Test72(8888,"用户二")).start();
    14     }
    15 }
    用户一
     1 package Net;
     2 
     3 /**
     4  * author liulei
     5  * data  5.27
     6  * since 1.8
     7  * version 1.0
     8  * Description  用户二
     9  */
    10 public class Test74{
    11     public static void main(String[] args) throws Exception {
    12         new Thread(new Test71(5555,8888,"localhost")).start();
    13         new Thread(new Test72(9999,"用户一")).start();
    14     }
    15 }
    用户二

    7:域名解析

     1 package Net;
     2 
     3 import java.io.FileOutputStream;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.net.HttpURLConnection;
     7 import java.net.MalformedURLException;
     8 import java.net.URL;
     9 
    10 /**
    11  * author liulei
    12  * data
    13  * since 1.8
    14  * version 1.0
    15  * Description
    16  */
    17 public class Test8 {
    18     public static void main(String[] args) throws IOException {
    19         URL url = new URL("https://www.cnblogs.com/henuliulei/");
    20         System.out.println(url.getPort());//端口
    21         System.out.println(url.getHost());//ip
    22         System.out.println(url.getProtocol());//协议
    23         System.out.println(url.getPath());
    24         System.out.println(url.getFile());
    25         System.out.println("--------------分割线-------");
    26         URL url1 = new URL("https://files.cnblogs.com/files/henuliulei/Java基础阶段笔记.zip");
    27         //连接这个资源
    28         HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    29         InputStream inputStream = urlConnection.getInputStream();
    30         FileOutputStream fileOutputStream = new FileOutputStream("a.doc");
    31         byte[] buffer = new byte[32768];
    32         int len;
    33         while ((len= inputStream.read(buffer))!=-1){
    34             fileOutputStream.write(buffer,0,len);//写出数据
    35         }
    36         fileOutputStream.close();
    37         inputStream.close();
    38         urlConnection.disconnect();
    39     }
    40 }
  • 相关阅读:
    classpath多个包添加
    不错的博客
    ARCGIS10.1 GeoDatabase深入理解:客户端连接与退出地理数据库时系统表的初始化
    ArcGIS Geodatabase版本控制机制的学习总结
    ARCGIS 10.1 发布服务问题以及注意事项汇总
    关于项目外包的一些总结
    ArcGIS与SuperMap的使用比较(1)
    [译]关于JavaScript 作用域你想知道的一切
    Apache 配置ArcGIS server/portal 反向代理
    arcgis server 无法手动删除切片
  • 原文地址:https://www.cnblogs.com/henuliulei/p/12978866.html
Copyright © 2020-2023  润新知