| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> JAVA TCP编程和UDP编程 -> 正文阅读 |
|
[网络协议]JAVA TCP编程和UDP编程 |
TCP连接1.严格区分客户端和服务端。 java.net.Socket类和java.net.ServerSocket类 2. Socket类public Socket(String host, int port) 如果指定host是null,则相当于指定地址为回送地址,一旦使用回送地址发送数据,立即返回,不进行任何网络传输。 2.1 常用方法: public InputStream getInputStream():? 返回此套接字的输入流 public OutputStream getOutputStream() 返回此套接字的输出流 public void close()? 关闭此套接字 public void shutdownOutput() 先前写出的数据将被发送,随后终止输出流 3.ServerSocket()类实现服务器套接字,该对象等待通过网络的请求 public ServerSocket(int port) //将此对象绑定到指定的端口号上 3.1 常用方法 public Socket accept() //监听并接受连接,在建立连接之前会一直阻塞] 4. URL类 4.1 基础知识 URI?统一资源定位符 URL 统一资源定位符 <传输协议>://<主机名>:<端口号>/<文件名>#片段名?参数列表 最常见的传输协议即http(超文本传送协议),其次是ftp(文件传送协议) 主机名指出万维网文档所在的主机 URN 统一资源命名? java.net.URL 4.2 构造方法: //根据指定字符串创建URL URL(String protocol, String host, int port, String file) //根据指定协议名、主机名、端口号和文件名创建URL对象 URL(String protocal, String host, String file)? //根据指定协议名、主机名和文件名创建URL 4. 3 常用方法 String getProtocol() //获取URL对象的协议名 String getHosts()? //获取对象的主机名 String getPort()? //获取对象的端口号 String getPath()? //获取对象的文件路径 String getFile()? ?// 获取对象的文件名 String getQuery()? //获取对象的查询部分 URLConnection openConnection() //返回一个URLConnection实例,表示与之连接的远程对象的URL 其中 URLConnection类中的方法: InputStream getInputStream()? //返回从此打开的连接读取的输入流 disconnection() //断开连接 UDP连接对于UDP,没有所谓Server和Client java.net.DatagramSocket //表示用于发送和接收数据报的套接字 java.net.DatagramPacket DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) //构造数据报包,用来将长度为length的包发送到指定主机上的指定端口号 //offset 代表偏移量 DatagramPacket(byte[] buf, int offset, int length) //用来接收长度为length的数据包 //表示数据报的数据包 实现:将客户端的图片,通过网络上传到服务器,服务器收到后回复消息 大致流程: //客户端:将存在磁盘的图片转为文件字节数组? -> Socket把文件字节数组上传? ->? 服务端收到文件字节数组后将其? 所用知识点: 附:HTTP知识点 1.HTTP是面向事务的应用层协议,默认端口号为80 2. HTTP本身无需连接,但在传输层上HTTP使用TCP连接保证可靠传输。 3.HTTP协议无状态,服务器不会记得之前连接过的客户。 4.浏览器请求一个文档的工作过程: 客户点击某个万维网文档的链接 HTTP协议和服务器建立TCP连接(三次握手) 在三次握手的前两部分完成后(一个RTT时间),客户把HTTP请求报文作为TCP连接的第三个报文的数据发到服务器 服务器收到HTTP请求报文把对应报文返回给客户 综上,上述过程所用时间为两个RTT(一个用于连接TCP连接,一个用于请求和接收万维网文档)加上文档传输时间。 5.代理服务器: 功能上可以理解为内存中的cache,目的是减缓源服务器的压力,降低时延。 6. HTTP的报文结构(待更) 7.Cooike 虽然HTTP是无状态的,但在其中可以使用Cookie来满足服务器记忆客户的需求 Cookie工作过程:当客户A访问一个网站的服务器时,该服务器未该客户产生一个唯一的识别码,并以此为索引在服务器后端的数据库里产生一个项目,给客户A返回的HTTP响应报文中添加Set-cookie,其值为识别码,客户A收到响应浏览器在其管理的Cookie文件中添加一行(包括服务器的主机名和识别码),之后客户A每发送一个HTTP请求报文,其浏览器就会取出此网站的识别码并放入HTTP请求报文的Cookie首部行中,这样服务器就可以识别用户,服务器能够了解的是客户访问的页面及其顺序,浏览器不会存储客户关于各网址的用户名和密码,但服务器可以通过Cokkie中存储的识别码来验证客户从而方便客户免密登录网站。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:29:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |