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中存储的识别码来验证客户从而方便客户免密登录网站。



