cs 客户端 服务器
例: QQ 端游 迅雷 百度网盘
优点
- 画面精美
- 可以在客户端电脑上进行一些计算保存一些数据 从而减轻服务器的压力
bs 浏览器 服务器
例:电商网站 淘宝 京东 页游
优点:
- 不需要下载 不占用硬盘空间
- 开发周期短 任何操作系统 都会有浏览器 只需要开发服务端即可
- 可以无缝更新
网络编程
就是在一定的协议下,实现两台计算机的通信的程序
三要素
协议
- 两台计算机通信必须要遵循一定的规则 有点像 马路上的扯需要遵守交通规则
- UPD协议
- 面向无连接的通信协议 两台计算机进行交互 不需要建立连接 发送端给接收发送数据 直接发送 不考虑 接收端是否存在 接收端即使接收到数据 也不会反馈给发送端
- UDP协议由于不需要建立连接 消耗资源少 发送效率高 但是每次发送的数据不能超过64kb 不能保证数据的完整性
TCP协议
- 面向连接的通信协议 两台计算机进行交互 必须建立连接 可以保证数据的可靠的 无差错的传输
三次握手协议
客户端---->服务端<br /> 服务端<----客户端<br /> 客户端---->服务端TCP协议需要建立连接 消耗资源多 发送效率没那么高 发送数据没有限制 可以保证数据的完整性
上传和下载必须使用TCP协议
ip
- 计算机进入到网络中,需要唯一的标识,在TCP/IP协议中,这个唯一标识就是IP地址
- ipv4:4个字节的2进制数表示 为了方便 通常表示为192.168.1.1这种格式
ipv6:采用128位地址长度,每16个字节一组,分成8组十六进制数 解决资源不够的问题
常用命令
查看IP地址
ipconfig检查网络是否连通
ping ip地址<br /> ping 网址特殊的ip地址
127.0.0.1<br /> localhost<br /> 都代表当前计算机的ip
端口号
- 进程的唯一标识
- 范围 0-65535 前1024已经被占用
- 计算机通过ip地址 确认接收端的地址 通过端口号 确认要接收的进程
发送端
- java.net.DatagramSocket
- 构造方法
- public DatagramSocket()
- 方法
- void send(DatagramPacket p)从此套接字发送数据报包
- 构造方法
- 发送端数据包
- java.net.DatagramPacket
- 构造方法
- public DatagramPacket(byte[]bytes,int length,InetAddress ip,int port) 创建发送数据包对象
- 构造方法
- java.net.DatagramPacket
接收端
- java.net.DatagramSocket
- 构造方法
- public DatagramSocket(int port)创建接收端对象 绑定端口号
- 方法
- void receive(DatagramPacket p)接收数据包的方法
- 构造方法
UDP接收端的数据包
静态方法创建对象
- static InetAddress getLocalHost() 返回本地主机的ip地址对象
- static InetAddress getByName(String host)根据主机名 获取ip地址对象 可以写主机名 String的ip网址
- 方法
- String getHostName()获取主机名
- String getHostAddress()获取ip地址
UDP发送端
- java.net.DatagramSocket
- 构造方法
- public DatagramSocket()
- 方法
- void send(DatagramPacket p)从此套接字发送数据报包
- 构造方法
发送端数据包
java.net.DatagramPacket
构造方法
public DatagramPacket(byte[] bytes,int length,InetAddress ip,int port)
创建数据包对象
- 创建发送端对象 DatagramSocket
- 创建数据包对象 DatagramPacket 封装数据 接收端ip 接收端端口
- 调用发送端对象的send方法 发送数据包
- 关闭资源
UDP的接收端
- java.net.DatagramSocket
- 构造方法
- public DatagramSocket(int port)创建接收端对象 绑定端口号
- 方法
- void receive(DatagramPacket p)接收数据包的方法
- 构造方法
- UDP接收端的数据包
- java.net.DatagramPacket
- 构造方法
- public DatagramPacket(byte[]buf,int length)构造 DatagramPacket,用来接收长度为length的数据包
- 方法
- int getLength()获取发送端发送数据长度
- int getPort()发送端端口
- InetAddress getAddress()发送端ip
- 构造方法
- java.net.DatagramPacket
- 创建接收端对象 绑定端口号
- 创建数据包对象
- 调用接收端对象的receive方法接收数据包
- 拆包
- 关闭资源
TCP客户端
- java.net.Socket
- 构造方法
- Socket(InetAddress address,int port)
- Socket(String host,int port)创建客户端对象 绑定服务器ip和端口
- 方法
- OutputStream getOutputStream()获取当前客户端字节输出流
- InputStream getInputStream()获取当前客户端对象的字节输入流
- 构造方法
- 创建客户对象 绑定服务器ip和端口
- 获取字节输出流对象
- 向服务器写数据”你好”
- 获取字节输入流对象
- 接收服务器返回的数据”滚”
- 关闭资源
TCP服务器
- java.net.ServerSocket
- 构造方法
- public ServerSocket(int port)创建服务器对象 指定端口 要和客户端对应
- 方法
- Socket accept()获取正在连接服务器的 客户端对象
- 构造方法
- 创建服务器端对象 指定端口号
- 调用accept方法 获取正在连接的客户端对象
- 通过客户端对象 获取字节输入流
- 接收当前发送的数据”你好”
- 通过客户端对象 获取字节输出流
- 向当前客户端返回数据”滚”
- 关闭资源
