栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA TCP编程和UDP编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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(string s)

//根据指定字符串创建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中存储的识别码来验证客户从而方便客户免密登录网站。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号