🎶Java网络编程
简介
架构区分
- 网页编程: B/S
- 网络编程: C/S
通信要素(TCP/IP)
- IP
- 端口
协议参考
更为详细的: 科来网络通讯协议图 2020 版
- 此处针对传输层 TCP/UDP 学习.
IP
import java.net.InetAddress; |
端口
TCP 与 UDP 各有 65535 个端口
两个协议间不冲突
但是一个协议下的一个端口只能同时被一个软件占用.
端口分类
公有端口 0 ~ 1023
HTTP:80
HTTPS:443
FTP:21
Telent:23
程序注册端口:1024 ~ 49151,分配给用户或者程序
Tomcat:8080
MySQL:3306
Oracle:1512
动态、私有:49152 ~ 65535
常用 shell 指令
netstat -ano #查看所有的端口
netstat -ano | finstr "5900" #查看指定的端口
tasklist | findstr "8696" #查看指定端口的进程InetSocketAddress
import java.net.InetSocketAddress;
public class Port {
public static void main(String[] args) {
InetSocketAddress socketAddress = new InetSocketAddress("localhost", 8080);
System.out.println(socketAddress);
System.out.println(socketAddress.getAddress());
System.out.println(socketAddress.getHostName());
System.out.println(socketAddress.getPort());
}
/**
localhost/127.0.0.1:8080
localhost/127.0.0.1
localhost
8080
*/
}
通信协议
通过约定协议来管控通信的速率,码率等问题
并通过协议分层来简化复杂度
几种协议
TCP:用户传输协议
UDP:用户数据报协议
IP:网络互连协议
TCP/IP 协议簇:是一组协议 (四层概念模型)
TCP
TCP 是客户端<–>服务端双向的信息沟通,可长时间稳定连接
稳定连接最小验证
三次握手,四次挥手
最少需要三次,保证稳定连接!
A:你瞅啥?
B:瞅你咋地?
A:干一场!
至少四次,双方才能都断开连接
A:我要走了
B:你真的要走了吗?
B:你真的真的要走了吗?
A:我真的要走了
UDP
单向的信息传递
没有客户端与服务端界限
无论有没有接收方,无论接收方是否接收,发送方只管发送
常见的
DDOS攻击
,让大量垃圾信息污染服务器接收端口,使其瘫痪.
TCP 连接
- Server 服务端与 Client 客户端通过 TCP 方式创建数据连接.
Server 端
建立服务的端口 ServerScoket
等待用户的连接 accept
接收用户的消息
import java.io.ByteArrayOutputStream; |
Client 端
连接服务器 Socket
发送消息
import java.io.OutputStream; |
文件传输
Server
import java.io.File; |
Client
import java.io.ByteArrayOutputStream; |
UDP 连接
Server
import java.net.DatagramPacket; |
Client
import java.net.DatagramPacket; |
UDP 循环发送
Server
import java.net.DatagramPacket; |
Client
import java.io.BufferedReader; |
双向聊天
实现
发送
,接收
两个线程类老师和学生各开上面两个线程,实现
发,收
功能.
发送线程
import java.io.BufferedReader; |
接收线程
import java.io.IOException; |
老师
public class Teacher { |
学生
public class Student { |
URL
- 文件下载
import java.io.File; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ⭐️齐下无贰⭐️!
评论