java的Socket通信
Posted JAVA笔记书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的Socket通信相关的知识,希望对你有一定的参考价值。
Socket编程
1.网络基础知识
2.InetAddress类
3.URL
4.TCP编程
5.UPD编程
两台计算机通过网络进行通信
2.需要拥有共同的语言,否则言语不通。也就是协议
3.每台主机需要拥有相应的端口号,一台主机可以运行多个程序,如何辨别不同程序的通信,使用端口号
TCP/IP协议
1.TCP/IP是目前世界上应用最广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合。也称:TCP/IP协议族或TCP/IP协议栈
2.TCP:Transmission ControlProtocol 传输控制协议
3.IP:Internet Protocol 互联网协议
4.TCP/IP网络分层
物理 如网线,网卡
数据链路
网络
传输 TCP/IP协议
应用 HTTP超文件传输协议(新闻等)/FIP文件传输协议(文件下载,上传和共享)/SMTP简单邮件传输协议(文件的发送)/Telent远程登录服务
IP地址
端口
1.端口可以区分电脑运行的多个不同程序发送的信息
2.每个程序拥有唯一的端口号
3.端口号范围为0~65535,其中0~1023为系统所保留
5.常用的端口号http:80 ftp:21 telnet:23
Java中的网络支持
针对网络通信的不同层次,Java提供的网络功能有四大类:
2.URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据
3.Sockets:使用TCP协议实现网络通信的Socket相关的类
4.Datageam:使用UDP协议,将数据保存在数据报中,通过网络进行通信
InetAddress类
2.详细方法可查API
URL
2.URL由两部分组成:协议名称和资源名称,中间用冒号隔开
3.在java.net包中,提供了URL类来表示URL
4.使用URL读取网页的内容
4.1,通过URL对象的openStream()方法可以得到指定的资源的输入流
4.2通过输入流可以读取,访问网络上的数据
Socket通信
1.TCP协议是面向连接,可靠的,有序的,以字节流的方式发送数据
2.基于TCP协议实现网络通信的类
客户端的Socket类
服务器端的ServerSocket类
Socker通信
TCP协议是面向连接,可靠的,有序的,一字节的方式发送数据基于TCP协议实现网络通信的类
客户端的Socket类
服务器端的ServerSocket类
Socket通信模型
Server Client
建立服务端倾听socket 建立连接 创建连接socket向服务器端发送请求
等待并接受连接请求 ——————————
接受请求后创建连接socket
______________________________________________________________________
InputStream --------------------------- outputStream
outputStream -------开始通信------- InputStrea
关闭socret及相关资源 ----结束通信----- 关闭资源
Socket通信实现
1.创建ServerSocket和Socket
2.打开连接到Socket的输入/输出流
3.按照协议对Socket进行读/写操作
4.通信结束 关闭输入输出流,关闭Socket
服务器端
1.创建ServerSocket对象,绑定监听端口
2.通过accept()方法监听客户端请求
3.连接建立后,通过输入流读取客户端发送的请求信息
4.通过输出流向客户端发送响应信息
5.关闭相应资源
客户端
2.连接建立后,通过输出流向服务器端发送请求信息
3.通过输入流获取服务器响应的信息
4.关闭相关资源
多线程服务器
应用多线程来实现服务器与多客户端之间的通信,基本步骤
1.服务器端创建ServerSocket,循环调用accept()等待客户端连接
2.客户端创建一个socket并请求和服务器端连接
4.建立连接的两个socket在一个单独的线程上对话
5.服务器端继续等待新的连接
UDP编程
1.UDP协议(用户数据报协议)是无连接,不可靠,无序的
2.UDP协议以数据报作为数据传输的载体
相关操作类
DatagramPacket:表示数据报包
DatagramSocket:进行端到通信的类
UDP服务器端实现的步骤
1.创建DatagramSocket,指定端口号
2.创建Datagrampacket
3.接受客户端发送的数据信息
4.读取数据
UDP客户端实现步骤
1.定义发送信息
2.创建DatagramPacket
3.创建DatagramSocket
4.发送数据
重点
1.Socket通信原理
2.基于TCP的Socket通信
3.多线程的优先级
服务器需要响应多个客户端的请求,就需要使用多线程
为设置优先级可能导致运行时速度非常慢,可降低优先级
4.是否关闭输出流和输入流
对于同一个socket,如果关闭了输出流,则与该输出流关联的socket也会被关闭,所有一般不用关闭流,直接关闭socket
5.使用TCP通信传输对象
使用ObjectOutStream和ObjectInputStream
6.socket编程传递文件
结合io进行完成
以上是关于java的Socket通信的主要内容,如果未能解决你的问题,请参考以下文章