一、Socket概念(套接字)
1.Socket实质上提供了进程通信的端点,网络上的两个程序通过一个双向的通讯链路实现数据的交换,这个双向链路的一端称为一个Socket。
二、应用程序通过“套接字”向网络发出请求或者应答网络请求
三、最早是在Unix上的一套网络程序通讯标准
四、广泛移植到其它平台
五、TCP/IP 5层模型中Socket位于应用层和传输层之间
六、OSI7层模型中Socket位于会话层和传输层
七、Socket分类
1.原始式套接字(SOCK_RAW)
a.允许较低层次协议,可以接收本机网卡上的数据帧或数据包,对监听网络流量和分析很有用。
2.流式套按字(SOCK_STREAM)
a.提供了一个面向连接,可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。对应使用的是TCP协议。
3.数据报式套按字(SOCK_DGRAM)
a.无连接服务。数据报以独立包形式被发送,不提供无差错保证,数据可能丢失或重复,并且接收顺序无序。对应使用的是UDP协议。
八、Socket通信原理
九、基于TCP/IP协议的Socket编程
1.Socket类
构造方法:
a.Socket(String host,int port)
i.向host主机的port端口发起连接请求
b.Socket(String host,int port,InetAddress localAddr,int localPort)
i.向host主机的port端口发起连接请求,发起请求的计算机为localAddr,端口为localPort
c.InetAddress类表示互联网协议地址,包含IP地址InetAddress类是Java对IP地址的封装。
常用方法:
a.InetAddress getInetAddress()
i.返回与当前Socket对象关联的InetAddress对象
b.Void shutdownInput()
i.此套接字的输入流置于“流的末尾”
c.void shutdownOutput()
i.禁用此套接字的输出流
d.InputStream getInputStream()
i.返回当前Socket对象关联的InputStream对象,它是服务器向客户端发送回来的数据流
e.OutputStream getOutputStream()
i.返回当前Socket对象关联的OutputStream对象,它是客户端向服务器发送的数据流
f.void close()
i.关闭该Socket对象建立的连接
2.ServerSocket类
构造方法
a.ServerSocket()
i.创建一个ServerSocket对象
b.ServerSocket(int port)
i.创建一个ServerSocket对象,并绑定到指定的端口
常用方法
a.Socket accept()
i.侦听并接收到此ServerSocket的连接。此方法在连接传入之前一直阻塞
b.void close()
i.使用服务器释放占用的资源,并断开所有与客户端的连接。
c.InetAddress getInetAddress()
i.返回当前服务器绑定的IP地址信息
3.位于java.net包中
十、Socket编程步骤
服务器端:
1.建立一个服务器Socket绑定指定端口开始监听
2.使用accept()方法阻塞监听,获得新的连接
3.建立输入和输出流
4.在已有的协议上产生会话
5.使用close()方法关闭流和Socket
客户端:
1.建立客户端Socket连接,指定服务器的位置以及端口
2.得到Socket的读写流
3.利用流按照一定的协议对Socket进行读写操作
4.使用close()关闭流和Socket
十一、InetAddress类
1.常用方法
getHostAddress()
十二、基于UDP协议的Socket编程
1.特点
a.基于UDP协议
b.无连接
c.投出数据包快速高效
d.数据安全性不佳
2.应用场合
a.网络游戏
b.视频会议
c.qq聊天
3.java.net中的DatagramSocket类和DatagramPacket类
a.DatagramPacket类:数据包,封装了数据、数据长度、目标地址和目标端口
b.发送和接收数据包的套接字,不维护连接状态,不产生输入输出流
c.DatagramPacket构造方法
i.DatagramPacket(byte[] buf,int length,inetAddress addresss,int port):构造DatagramPacket对象,用来将长度为length的包发送到指定主机上的指定端口号
d.DatagramSocket类的构造方法
i.DatagramSocket():创建一个DatagramSocket对象,并将其与本地主机上任何可用的端口绑定
i.DatagramSocket(int port):创建一个DatagramSocket对象,并将其与本场主机上的指定端口绑定
e.DatagramSocket类的常用方法
i.void send(DatagramPacket dp):发送指定的数据报
ii.Void receive(DatagramPacket p):接收数据报。收到数据以后,存放指定的DatagramPacket对象中
1.Socket实质上提供了进程通信的端点,网络上的两个程序通过一个双向的通讯链路实现数据的交换,这个双向链路的一端称为一个Socket。
二、应用程序通过“套接字”向网络发出请求或者应答网络请求
三、最早是在Unix上的一套网络程序通讯标准
四、广泛移植到其它平台
五、TCP/IP 5层模型中Socket位于应用层和传输层之间
六、OSI7层模型中Socket位于会话层和传输层
七、Socket分类
1.原始式套接字(SOCK_RAW)
a.允许较低层次协议,可以接收本机网卡上的数据帧或数据包,对监听网络流量和分析很有用。
2.流式套按字(SOCK_STREAM)
a.提供了一个面向连接,可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。对应使用的是TCP协议。
3.数据报式套按字(SOCK_DGRAM)
a.无连接服务。数据报以独立包形式被发送,不提供无差错保证,数据可能丢失或重复,并且接收顺序无序。对应使用的是UDP协议。
八、Socket通信原理
九、基于TCP/IP协议的Socket编程
1.Socket类
构造方法:
a.Socket(String host,int port)
i.向host主机的port端口发起连接请求
b.Socket(String host,int port,InetAddress localAddr,int localPort)
i.向host主机的port端口发起连接请求,发起请求的计算机为localAddr,端口为localPort
c.InetAddress类表示互联网协议地址,包含IP地址InetAddress类是Java对IP地址的封装。
常用方法:
a.InetAddress getInetAddress()
i.返回与当前Socket对象关联的InetAddress对象
b.Void shutdownInput()
i.此套接字的输入流置于“流的末尾”
c.void shutdownOutput()
i.禁用此套接字的输出流
d.InputStream getInputStream()
i.返回当前Socket对象关联的InputStream对象,它是服务器向客户端发送回来的数据流
e.OutputStream getOutputStream()
i.返回当前Socket对象关联的OutputStream对象,它是客户端向服务器发送的数据流
f.void close()
i.关闭该Socket对象建立的连接
2.ServerSocket类
构造方法
a.ServerSocket()
i.创建一个ServerSocket对象
b.ServerSocket(int port)
i.创建一个ServerSocket对象,并绑定到指定的端口
常用方法
a.Socket accept()
i.侦听并接收到此ServerSocket的连接。此方法在连接传入之前一直阻塞
b.void close()
i.使用服务器释放占用的资源,并断开所有与客户端的连接。
c.InetAddress getInetAddress()
i.返回当前服务器绑定的IP地址信息
3.位于java.net包中
十、Socket编程步骤
服务器端:
1.建立一个服务器Socket绑定指定端口开始监听
2.使用accept()方法阻塞监听,获得新的连接
3.建立输入和输出流
4.在已有的协议上产生会话
5.使用close()方法关闭流和Socket
客户端:
1.建立客户端Socket连接,指定服务器的位置以及端口
2.得到Socket的读写流
3.利用流按照一定的协议对Socket进行读写操作
4.使用close()关闭流和Socket
十一、InetAddress类
1.常用方法
getHostAddress()
十二、基于UDP协议的Socket编程
1.特点
a.基于UDP协议
b.无连接
c.投出数据包快速高效
d.数据安全性不佳
2.应用场合
a.网络游戏
b.视频会议
c.qq聊天
3.java.net中的DatagramSocket类和DatagramPacket类
a.DatagramPacket类:数据包,封装了数据、数据长度、目标地址和目标端口
b.发送和接收数据包的套接字,不维护连接状态,不产生输入输出流
c.DatagramPacket构造方法
i.DatagramPacket(byte[] buf,int length,inetAddress addresss,int port):构造DatagramPacket对象,用来将长度为length的包发送到指定主机上的指定端口号
d.DatagramSocket类的构造方法
i.DatagramSocket():创建一个DatagramSocket对象,并将其与本地主机上任何可用的端口绑定
i.DatagramSocket(int port):创建一个DatagramSocket对象,并将其与本场主机上的指定端口绑定
e.DatagramSocket类的常用方法
i.void send(DatagramPacket dp):发送指定的数据报
ii.Void receive(DatagramPacket p):接收数据报。收到数据以后,存放指定的DatagramPacket对象中
iii.void close():关闭当前DatagramSocket对象
本文转自 素颜猪 51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1561404