JAVA总结 0828 DAY23 Vimcelia

总结

今天主要学习了网络编程:

一. 网络编程的概念:

  1. 网络:计算机网络,由在不同地方,不同计算机主机,互联形成的一个计算机系统,具有通讯和数据共享的作用。
  2. 网络编程: 在已经拥有完备成熟的网络系统之后,在整个基础上,使用网络进行编程,对应用层进行设计的活动。

二.网络编程三要素

IP地址、端口号、通信协议
1. IP地址:
1. 在一个计算机网络中,某台计算机在网络中的唯一标志;
2. IP分类 :
	- IP4 :是由0-255组成,四个字节,一般的网络都192.168==>c类网络 ;  a类网络一般是政府使用(军事用途),
	-  IP6:是由8个数组数组,四个16进制组成
	- ###### 查看当前电脑的ip地址 ipconfig     拼服务器是否连通了,也就是拼ip地址(重点)

java 提供获取ip的类 InetAddress

public static InetAddress getLocalHost()  
	//返回本地主机
public String getHostAddress() 
  // 获取ip地址
public String getHostName(  )   
//获取ip的主机名
2. 端口号:每一个软件(每一个进程的唯一标识)

当软件开启之后,系统给其生成的一个,也可以自己去设置,当软件开启时端口号系统产生,当软件关闭的时候回收

常用软件的端口号:

  • Tomcat: 8080
  • oracle:1521
  • mysql:3306
  • qq:4000
  • 邮箱的端口号: 网易 137
3. 协议: 各个计算机网络传输的一个规范

协议分为7层
主要说的是传输层 : TCP UDP + xmpp 协议 ==> 即时通讯(qq,微信)

  1. web阶段主要: http 协议 https 协议
  2. UDP面向无连接的协议: 传输的数据快,但是可以会丢数据(cts飞q), 会出现卡顿
  3. TCP 面向连接的协议: 传输慢,不会丢失数据(三次握手) ==>qq传消息 文字需要准确性,使用的就是这个协议
    在这里插入图片描述

面向协议来进行通信 :TCP

Socket 对象: 是两台机器间通信的端点。

  1. 构造方法:

     public Socket(String host,int port)  
    

传递两个参数 : 一个ip地址, 一个是端口号 (如果是本机ip地址传递localhost )

  1. 常规的方法

     public OutputStream getOutputStream(  )throws IOException  
     //写数据的流对象
     public InputStream getInputStream( )throws IOException  
     //读取数据的对象
     public void shutdownOutput( )throws IOException 
     //类似于flush( )方法 
    
  2. 客户端
    发送消息的过程 :
    1. 实例化这个socket对象
    2. 通过socket对象 得到输出流 OutputStream
    3. 调用 write( )方法
    4. shutdownOutput( )刷新方法
    5. 拿到输入流 InputStream
    6. new BufferReader(new InputStreamReader(new FileInputStream))输出数据
    7. 关闭资源

ServerSocket 此类实现服务器套接字

构造 :

public ServerSocket(int port) (需要与客户端的端口号一样)

常用的方法:

public Socket accept()throws IOException  
//监听客户端发送的消息,返回一个Socket
  1. 服务器
    接受信息的步骤
    1. 实例化ServerSocke
    2. 调用 accept( ) ,返回的是一个socket对象
    3. 拿到输入流 InputStream
    4. new BufferReader(new InputStreamReader(new FileInputStream)) 读取消息
    5. 得到OutputStream 对象
    6. 调用 write()
    7. shutdownOutput()
    8. 关闭资源
注意:运行的时候,要先运行服务器,再运行客户端

如果有两个客户端,一个服务器,就会产生这样一个错误 Connection refused: connect

如何解决这个问题 : 使用多线程解决这个问题 ==》解决多个客户端对应一个服务器的问题
实际应用:使用TCP上传照片思路在这里插入图片描述

UDP:基于UDP协议进行传输,类似于发包裹

传输的类主要是 DatagramSocket 此类表示用来发送和接收数据报包的套接字
  1. 构造方法:

     public DatagramSocket(int port,InetAddress laddr)  
     //第一个数端口号    第二个参数是地址
     public DatagramSocket(int port)
     //参数是端口号
    
  2. 常规的方法是:

     public void send(DatagramPacket p)throws IOException 
     //发送数据包 
     public void receive(DatagramPacket p)throws IOException  
     //接收数据包 
    
  3. DatagramPacket 此类表示数据报包 (包裹对象)

两个重要的构造方法:
DatagramPacket(byte[ ] buf, int offset, int length, InetAddress address, int port) 
DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) 
  • 第一个参数是 字节数组
  • 第二个参数是从字节数组的什么地方开始
  • 第三个是到什么地方结束
  • 第四个:获取的ip对象
  • 第五个就是端口号
  1. 重要的方法:

     public SocketAddress getSocketAddress() 
     //返回的就是SocketAddress
     public byte[] getData  (  )   
     //获取缓冲区的数据
    
  2. 客户端的步骤:
    1. 实例化这个对象
    2. 构建一个数据包
    3. 发送数据
    4. 关闭资源

  3. 服务器: 基于UDP的服务器
    1. 实例化这个对象DatagramSocket
    2. 构建一个包裹对象
    3. 接收数据 receive()
    4. 关闭资源

基于udp比较繁琐, 没有获取流对象的方法,所有只能够按照以上的方法区操作

疑问

如何使用UDP传输照片和视频等多媒体数据?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值