西安网站建设哪家专业,官网申请,wordpress媒体库管理,怎么做一个局域网站目录
概念
分类
数据报套接字#xff1a;使用传输层UDP协议
流套接字#xff1a;使用传输层TCP协议
原始套接字
Socket编程注意事项 前言#xff1a;本文主要介绍了在什么是套接字及在Java中套接字是什么#xff0c;和在套接字编程的注意事项。 概念
Socket套接…目录
概念
分类
数据报套接字使用传输层UDP协议
流套接字使用传输层TCP协议
原始套接字
Socket编程注意事项 前言本文主要介绍了在什么是套接字及在Java中套接字是什么和在套接字编程的注意事项。 概念
Socket套接字是由系统提供用于网络通信的技术是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程。简单来说, 要想进行网络通信, 就需要有Socket文件这样的对象。
借助这个Socket文件对象
往这个Socket对象中写入数据, 相当于通过网卡发送消息从这个Socket对象中读入数据, 相当于通过网卡接受消息才能间接的操作网卡。
分类
Socket套接字主要针对传输层协议划分为如下三类
数据报套接字使用传输层UDP协议
UDP即User Datagram Protocol用户数据报协议传输层协议。 以下为UDP的特点细节后续再学习
无连接不可靠传输面向数据报有接收缓冲区无发送缓冲区大小受限一次最多传输64k
对于数据报来说可以简单的理解为传输数据是一块一块的发送一块数据假如1000个字节 必须一次发送接收也必须一次接收1000个字节而不能分1000次每次接收1个字节。
下面介绍Java数据报套接字通信模型对于UDP协议来说具有无连接面向数据报的特征即每次都是没有建立连接并且一次发送全部数据报一次接收全部的数据报。 Java中使用UDP协议通信主要基于 DatagramSocket 类来创建数据报套接字并使用DatagramPacket 作为发送或接收的UDP数据报。对于一次发送及接收UDP数据报的流程如下 以上只是一次发送端的UDP数据报发送及接收端的数据报接收并没有返回的数据。也就是只有请求没有响应。对于一个服务端来说重要的是提供多个客户端的请求处理及响应流程如下 流套接字使用传输层TCP协议
TCP即Transmission Control Protocol传输控制协议传输层协议。 以下为TCP的特点细节后续再学习
有连接可靠传输面向字节流有接收缓冲区也有发送缓冲区大小不限
对于字节流来说可以简单的理解为传输数据是基于IO流流式数据的特征就是在IO流没有关闭的情况下是无边界的数据可以多次发送也可以分开多次接收.
下面介绍Java流套接字通信模型如下图所示 原始套接字
原始套接字用于自定义传输层协议用于读写内核没有处理的IP协议数据。简单了解即可。
Socket编程注意事项
1. 客户端和服务端开发时经常是基于一个主机开启两个进程作为客户端和服务端但真实的场景一般都是不同主机。
2. 注意目的IP和目的端口号标识了一次数据传输时要发送数据的终点主机和进程
3. Socket编程我们是使用流套接字和数据报套接字基于传输层的TCP或UDP协议但应用层协议也需要考虑这块我们在后续来说明如何设计应用层协议。
4. 关于端口被占用的问题 如果一个进程A已经绑定了一个端口再启动一个进程B绑定该端口就会报错这种情况也叫端 口被占用。对于java进程来说端口被占用的常见报错信息如下 此时需要检查进程B绑定的是哪个端口再查看该端口被哪个进程占用。 以下为通过端口号查进程的方式 1.在cmd输入 netstat -ano | findstr 端口号 则可以显示对应进程的pid。 2.在任务管理器中通过pid查找进程 解决端口被占用的问题 如果占用端口的进程A不需要运行就可以关闭A后再启动需要绑定该端口的进程B 如果需要运行A进程则可以修改进程B的绑定端口换为其他没有使用的端口。