• 三要素:IP地址,端口,协议
    • InetAddress的使用:

      • static InetAddress getByName(String host) 确定主机名称的IP地址。主机名可以是IP地址也可以是机器名称。
      • static InetAddress getByName(String host) 获取此IP地址的主机名
      • String getHostAddress() 返回文本显示中的IP地址字符串
        1. public class Demo {
        2. public static void main(String[] args) throws UnknownHostException {
        3. InetAddress address = InetAddress.getByName("192.168.0.101") ;
        4. String name = address.getHostName() ;
        5. String ip = address.getHostAddress() ;
        6. System.out.println(name+","+ip);
        7. }
        8. }
    • UDP

      • UDP发送数据
        • 创建发送端的Socket对象(DatagramSocket)
        • 创建数据,并把数据打包
        • 调用DatagramSocket对象的方法发送数据
        • 关闭发送端 ```java import java.io.IOException; import java.net.*; import java.nio.charset.StandardCharsets;

    public class Demo { public static void main(String[] args) throws IOException { DatagramSocket ds = new DatagramSocket() ; byte[] bys = “helloWorld”.getBytes(StandardCharsets.UTF_8) ; DatagramPacket dp = new DatagramPacket(bys,bys.length, InetAddress.getByName(“192.168.0.101”),10086) ; ds.send(dp); ds.close(); } }

    1. - UDP接收数据
    2. - 创建接收端的Scoket对象(DatagramSocket
    3. - 创建一个数据包,用于接收数据
    4. - 调用DatagramSocket对象的方法接收数据
    5. - 解析数据包,并把数据在控制台显示
    6. - 关闭接收端
    7. ```java
    8. import java.io.IOException;
    9. import java.net.DatagramPacket;
    10. import java.net.DatagramSocket;
    11. public class Demo1 {
    12. public static void main(String[] args) throws IOException {
    13. DatagramSocket ds = new DatagramSocket(10086) ;
    14. byte[] bys = new byte[1024] ;
    15. DatagramPacket dp = new DatagramPacket(bys,bys.length) ;
    16. ds.receive(dp);
    17. byte[] data = dp.getData() ;
    18. System.out.println(new String(data,0,dp.getLength()));
    19. ds.close();
    20. }
    21. }
    1. /* 手动输入数据发送 */
    2. import java.io.IOException;
    3. import java.net.*;
    4. import java.nio.charset.StandardCharsets;
    5. import java.util.Scanner;
    6. public class Demo {
    7. public static void main(String[] args) throws IOException {
    8. DatagramSocket ds = new DatagramSocket() ;
    9. Scanner sc = new Scanner(System.in) ;
    10. while(true){
    11. String line = sc.nextLine() ;
    12. byte[] bys = line.getBytes(StandardCharsets.UTF_8) ;
    13. DatagramPacket dp = new DatagramPacket(bys, bys.length,InetAddress.getByName("192.168.0.101"),10086) ;
    14. ds.send(dp);
    15. if(line.equals("886")){
    16. break;
    17. }
    18. }
    19. ds.close();
    20. }
    21. }
    22. *************************************************************************************
    23. import java.io.IOException;
    24. import java.net.DatagramPacket;
    25. import java.net.DatagramSocket;
    26. public class Demo1 {
    27. public static void main(String[] args) throws IOException {
    28. DatagramSocket ds = new DatagramSocket(10086) ;
    29. byte[] bys = new byte[1024] ;
    30. DatagramPacket dp = new DatagramPacket(bys,bys.length) ;
    31. while(true){
    32. ds.receive(dp);
    33. byte[] data = dp.getData() ;
    34. String line = new String(data,0,dp.getLength()) ;
    35. System.out.println(line);
    36. if(line.equals("886")){
    37. break;
    38. }
    39. }
    40. }
    41. }
    • TCP
      • 发送数据
        • 创建客户端Socket对象(Socket)
        • 获取输入流
        • 释放资源
      • 接收数据
        • 创建服务器端Socket对象(Server Socket)
        • 监听客户端连接,返回一个Socket对象
        • 获取输入流,读数据,并把数据显示在控制台
        • 释放资源 ```java / 发送端 / import java.io.IOException; import java.io.OutputStream; import java.net.*; import java.nio.charset.StandardCharsets;

    public class Demo { public static void main(String[] args) throws IOException { Socket socket = new Socket(“192.168.0.101”,10086) ; OutputStream os = socket.getOutputStream() ; os.write(“helloWorld”.getBytes(StandardCharsets.UTF_8)); socket.close();

    1. }

    }

    1. ```java
    2. /* 接收端 */
    3. import java.io.IOException;
    4. import java.io.InputStream;
    5. import java.net.ServerSocket;
    6. import java.net.Socket;
    7. public class Demo1 {
    8. public static void main(String[] args) throws IOException {
    9. ServerSocket ss = new ServerSocket(10086) ;
    10. Socket socket = ss.accept() ;
    11. InputStream is = socket.getInputStream() ;
    12. byte[] bys = new byte[1024] ;
    13. int len = is.read(bys) ;
    14. String data = new String(bys,0,len) ;
    15. System.out.println(data);
    16. ss.close();
    17. socket.close();
    18. }
    19. }