网络编程
网络编程
-
概述
-
![]()
-
计算机网络
- 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
-
网络编程的目的
- 无线电台。。。。传播信息和数据交换,通信
-
想要达到什么效果,需要什么
- 如何准确的定位网络上的一台主机 主机的地址192.130.16.12:端口号
- 找到了主机怎么进行数据传输
- javaweb:网页编程(B/S),而网络则是指TCP/IP(C/S)
-
-
网络通信的要素
- 如何实现网络的通信?
- 通信双方的地址
- Ip
- 端口号
- 192.168.11.11:端口号
- 规则:网络通信的协议
- http , ftp, smtp , tcp, udp......
- TCP/IP
![]()
-
网络编程中有两个主要的问题
- 如何准确的定位到网络上的一台或者多台主机,一般我们在上网的时候一般都是通过域名去访问,而其实ip地址才是主机的位置
- 找到主机后要怎么进行通信
- 网络编程的要素
- Ip和端口号 ip
- 网络通信协议 udp tcp
- 万物皆对象
- 如何实现网络的通信?
-
IP
- ip地址:InetAddress
- 唯一定位一台网络上的计算机
- 127.0.0.1:本机:本机localhost
- Ip地址的分类
- ipv4/ipv6:ipv4:127.0.0.1,4个字节组成。每个字节0-255,总的42亿个;ipv6:
- 公网(互联网)-私网(局域网):ABCD类网络(面试会考),192.168.xx.xx专门给组织内部使用
- 域名:可以更快记忆这个网站去进行访问
- ip:www.baidu.com
![]()
- ip地址:InetAddress
-
端口
- 端口表示计算机上的一个程序的进程
- 不同的进程有不同的端口号!用来区分入软件
- 被规定0-65535
- TCP,UDP:65535*2 TCP:80,udp:80,单个协议下,端口号不能冲突
- 端口分类:公有端口0-1023,HTTP:80端口,HTTPS:443端口,FIP:21,Telent:23;程序注册端口:1024-49151,分配用户或者程序:Tomcat:8080,Mysql:3306,Oracle:1521
- 动态,私有:
- 49152-65535
- (命令窗口进行端口查看的命令)
- netstat-ano#查看所有的端口
- netstat -ano findstr "5900"
- tasklist|findstr "8696" 查看指定端口进程
- ctrl+alt+v 快捷生成返回值
-
- 端口表示计算机上的一个程序的进程
- 通讯协议
- 协议:约定,就是一种大家约定好的一些怎么进行的传输
- 网络通讯协议:速率,传输码率,代码结构,传输控制.......
- TCP/IP 协议簇
- TCP:用户传输协议
- UDP:用户数据报协议
- IP:网络互联协议
- TCP和UDP对比:
- TCP: 连接,稳定,三次握手,四次挥手,客户端,服务端,传输完成,释放连接,效率低
- 三次握手,四次挥手:在进行连接时,我们需要先进行三次消息,这样一般就能确定你已经稳定连接啦,而在离开时,需要发双方需要四次进行确认
-
![]()
- UDP:不连接,不稳定,客户端,服务端:没有明确的界限,不管你有没有准备好,都会进行发送
- TCP: 连接,稳定,三次握手,四次挥手,客户端,服务端,传输完成,释放连接,效率低
-
TCP
- 客户端
- 连接服务器Socket
- 发送消息
- 服务器
- 建立服务的端口 ServerSocket
- 等待用户的连接accept()
- 接受用户的消息
- 文件上传
- 客户端
- 创建一个Socket去发送消息
- 通过Socket去创建一个输出流
- 在创建一个文件读取流,去进行文件读取
- 将读取的文件写入Socket创建的输出流
- 注意:在写入后要关闭这个输出流,不然程序会等在这个位置
- 在发送完后监听服务端给客服端发送的消息,查看服务端时候接受到这个文件
- 服务端
- 创建一个ServerSocket
- 通过ServerSocket的accept()方法去接收客户端发送的Socket
- 将Socket中的流拿出来进行读取
- 创建一个文件输出流来进行接收,
- 接受完后像客户端去发送一个消息,通知关闭连接
- 客户端
- 客户端
-
Tomcat
- 客户端
- 自定义C
- 浏览器B
- 服务端
- 自定义S
- Tomcat服务器S:Java后端开发
- Exception in thread "main"java.net.BindException:Address already in use:JVM_Bind(这个是一个端口被占用异常)
- 客户端
-
UDP
- 客户端
- 建立一个DatagramSocket
- 创建一个DatagramPacket,在里面进行数据封装(也就是getBytes),然后还有请求的路径还有端口
- 通过DatagramSocket的send方法进行数据包发送
- 服务端
- 建立一个DatagramSocket
- 创建一个DatagramPacket,在里面进行数据接收(通过字节数组)
- 通过DatagramSocket的receive方法进行数据包接收
- 实现一个在线咨询聊天
- 基础版:
- 发送端
- 建立一个DatagramSocket
- 通过循环去建立一个联系发送
- 创建一个DatagramPacket,在里面进行数据封装(也就是getBytes),然后还有请求的路径还有端口
- 通过DatagramSocket的send方法进行数据包发送
- 接收端
- 建立一个DatagramSocket
- 通过循环去建立一个联系接收
- 创建一个DatagramPacket,在里面进行数据接收(通过字节数组)
- 通过DatagramSocket的receive方法进行数据包接收
- 发送端
- 升级版
- 通过多线程进行相互之间进行发送和请求
- 先创建两个线程去继承Runnable接口,将一个设置为发送消息的,一个设置为接收消息的
- 让后创建连个进行通讯的类来启动线程,进行通讯的对象既要发送消息和接收消息,这样需要创建两个线程
- 注意:这个需要注意通讯两个人的端口一定需要对应,这样才能确保双方消息正常发送和接收
- 基础版:
- 客户端
-
URL
- 统一资源定位符:定位资源,定位互联网上的某个资源
- DNS域名解析
- 协议://ip地址:端口号/项目名/资源
- 可以同过一些url去下载资源
- 先创建一个URL,把瞎子资源url放入
- 然后通过url.openConnection()去获得连接返回一个HttpURLConnection
- 通过 HttpURLConnection这个区获取读取流
- 将读取的数据通过文件输出流区进行写入






浙公网安备 33010602011771号