编程语言网络编程

编程语言网络编程

网络编程

1.1 概述

计算机网络

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程目的

传播信息(数据交换、通信)

1.2 网络通信的要素

  • IP 和 端口号

  • 网络通信协议

1.3 IP

  • 唯一定位一台网络上计算机

  • 127.0.0.1:本机localhost

  • ip地址的分类(IPV4 / IPV6)

  • 域名:记忆IP问题

1.4 端口

端口表示计算机上的一个程序的进程

  • 不同进程有不同端口号,用于区分软件

  • 被规定 0 - 65535

  • (TCP) (UDP) 单个协议下,端口号不能冲突

  • 端口分类

    • 公用端口 0 - 1023

      • HTTP: 80

      • HTTPS: 443

      • FTP: 21

    • 程序注册端口 1024 - 49151,分配给用户或者程序

    • 动态、私有端口 49152 - 65535

      netstat -ano #查看所有端口
      netstat -ano|findstr "端口号" #查看指定端口
      tasklist|findstr "PID" #查看指定端口进程
      Ctrl + Shift + Esc 快速打开任务管理器

1.5 通信协议

TCP/IP协议组:实际上一组协议

TCP:打电话

  • 连接,稳定

  • 三次握手 四次挥手

    A:你瞅啥
    B:瞅你咋地
    A:干一场
    ​
    A:我要走了
    B:你真的要走了吗
    B:你真的真的要走了吗
    A:我真的要走了

UDP:发短信

  • 不连接,不稳定

1.6 TCP

客户端

  1. 连接服务器Socket

  2. 发送消息

//1.连接服务器
//获取服务端IP和端口号
InetAddress serverIP = InetAddress.getByName("localhost");
int port = 9999;
//创建一个Socket连接
socket = new Socket(serverIP, port);
​
//2.发送消息
os = socket.getOutputStream();
os.write("客服端向服务端发送消息".getBytes());

服务端

  1. 建立服务的端口

  2. 等待用户的连接

  3. 接受用户的消息

 //1.创建服务的端口
serverSocket = new ServerSocket(9999);
​
while (true) {
  //2.等待用户的连接
  socket = serverSocket.accept();
​
  //3.接受用户的消息
  is = socket.getInputStream();
  byte[] buffer = new byte[1024];
  int len;
  baos = new ByteArrayOutputStream();
  while ((len = is.read(buffer)) != -1) {
    baos.write(buffer, 0, len);
   }
  System.out.println(baos);
}

Tomcat

服务端

  • 自定义 S

  • Tomcat服务器 S :Java后台开发

客户端

  • 自定义 C

  • 浏览器 B

1.7 UDP

发送端

public class SendDemo01 {
  public static void main(String[] args) throws IOException {
    //1.创建数据包Socket
    DatagramSocket socket = new DatagramSocket(9998);
    //2.创建数据报包
    String massage = "数据报包";
    DatagramPacket packet = new DatagramPacket(massage.getBytes(), 0,
        massage.getBytes().length, InetAddress.getByName("127.0.0.1"), 9999);
    //3.发送数据报包
    socket.send(packet);
    //4.关闭资源
    socket.close();
   }
}

接收端

public class ReceiveDemo01 {
  public static void main(String[] args) throws IOException {
    //1.创建服务的端口
    DatagramSocket socket = new DatagramSocket(9999);
    //2.接收数据报包
    byte[] buffer = new byte[1024];
    DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
    socket.receive(packet);
    //3.输出数据报包
    System.out.println(packet.getAddress().getHostAddress());
    System.out.println(new String(packet.getData(), 0, packet.getLength()));
    //4.关闭资源
    socket.close();
   }
}

1.8 URL

统一资源定位符:定位资源(本地,互联网)

DNS域名解析

协议://ip地址:端口/项目名/资源

文章来源:https://www.cnblogs.com/ylfmax-blog/p/15800560.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值