网络编程

IP:定义网络上的节点(电脑,手机,pad,路由器...)..区分节点

* 分类:

* IPV4 : 32位   

* IPV6 : 128位

*

* 特点的IP:

* 局域网内部IP:192.168.0.0~192.168.255.255

* 127.0.0.1 : 默认本地IP

* localhost : 本地域名

* DNS服务器:解析IP和域名之间的关系

*

*  InetAddress 此类表示互联网协议 (IP) 地址。

*  static InetAddress getLocalHost()  返回本地主机。

*  static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。

* String getHostName()  获取此 IP 地址的主机名。

* String getHostAddress() 返回 IP 地址字符串(以文本表现形式)。

*

*  端口: InetSocketAddress

端口port:区分软件...

* 2个字节: 0~65535

* 注意:

* 1.同一的协议下端口号不能冲突

* 2.自定义设置端口号建议设置越大越好,一般8000网上

* 预留端口号:

* 80: http

* 8080:tomcat

* 1521:Oracle

* 3306:Mysql

*

* InetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)。

* InetSocketAddress(String hostname, int port) 根据IP|域名+端口号构建 

InetAddress getAddress()      获取 InetAddress。

String getHostName()  获取 hostname。

int getPort() 获取端口号。

URL:统一资源定位符

* 互联网三大基石: http html url

* url的构成:

* 协议

* 域名

*  端口

*  资源

*  数据

*  "http://www.baidu.com:80/index.html?name=zhangsan&pwd=123#a"

*  URL(String spec) 构建url

Socket套接字: 传输层为应用层开辟的小口子,通过 Socket进行发送和接收数据

* 不同协议下的socket实现不同

* 面向Socket编程

*

* tcp: 面向连接  打电话  安全  开销大  基于3次握手  大小没有限制 . 基于流传输

* udp: 非面向连接  写信|发短信  只管写只管发  开销小,效率高    不安全  大小有限制  一般不超过60k  , 基于字节数组传输

*

基于udp的socket编程:

* 发送端

* 接收端

* DatagramSocket 此类表示用来发送和接收数据报包的套接字。(定义发送端|接收端)

*  DatagramPacket数据报包(数据打包)

udp实现发送端的基本流程: 发送端和服务端是平等的

*  1.定义发送端    DatagramSocket(端口号) 指定发送端的端口号

*  2.准备数据

*  3.对数据打包 DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)

          构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。

        4.发送void send(DatagramPacket p)

  5.关闭  void close()  关闭此数据报套接字。

接收端基本流程:

* 1.定义接收端    DatagramSocket(int port)

* 2.准备字节数组

* 3.准备包裹用来接收数据  DatagramPacket(byte[] buf, int length)

* 4.接收

5.从包裹中获取数据

* byte[] getData()

          返回数据缓冲区。

int getLength()

          返回将要发送或接收到的数据的长度。

6.关闭

Socket 此类实现客户端套接字

* 客户端

* 1.定义客户端  Socket(String host, int port)  创建一个流套接字并将其连接到指定主机上的指定端口号。

* 2.IO操作 

* 输出流OutputStream getOutputStream()      返回此套接字的输出流。

* 3.刷出

* 4.关闭

ServerSocket  此类实现服务器套接字。

* TCP服务端

* 1.定义服务端    ServerSocket(int port)    创建绑定到特定端口的服务器套接字。

* 2.阻塞式监听  一个客户端连接成功,就是一个socket

* 3.io操作

* 4.关闭

TCP实现文件上传客户端 :

* 1.定义客户端  Socket(String host, int port)  创建一个流套接字并将其连接到指定主机上的指定端口号。

* 2.IO操作 先从文件中读入数据-->写出数据

* new FileInputStream("");

* 输出流OutputStream getOutputStream()      返回此套接字的输出流。

* 3.刷出

* 4.关闭

TCP实现文件上传服务端:

* 1.定义服务端    ServerSocket(int port)    创建绑定到特定端口的服务器套接字。

* 2.阻塞式监听  一个客户端连接成功,就是一个socket

* 3.io操作 :从客户端读入数据 --->文件输出流 写出文件中

* 4.刷出

* 5.关闭

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 网络编程 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运...
    go以恒阅读 2,170评论 0 6
  • 1 网络编程----TCPNo24 【 public class Server { public static...
    征程_Journey阅读 1,296评论 0 4
  • 6.1 公钥密钥加密原理 6.1.1 基础知识 密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算...
    AndroidMaster阅读 4,057评论 1 8
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 1,283评论 0 10
  • 1. 网络编程概述 1.1 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接...
    JackChen1024阅读 1,064评论 0 3