开发者社区> 技术小牛人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Socket

简介:
+关注继续查看
一、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对象中

            iii.void close():关闭当前DatagramSocket对象

本文转自  素颜猪  51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1561404

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
websocket
前端页面的实时刷新一般两种思路,即拉和推的思路: 拉:前端每隔一段时间到后台请求数据; 推:后端需要推送数据时,向前端推送数据。 没有特殊需求的话,一般使用推的方式。websocket是基于TCP的协议,能够实现客户端与服务端全双工通信。
812 0
SOCKET选项
在了解SOCKET选项之前请先了解TCP/IP协议的基本知识,如三次握手,四次挥手,11种状态之间是如何迁移,调用socket各个API会让TCP层进行什么操作等。API头文件: sys/socket.
4319 0
webSocket
webSocket是什么 webSocket是HTML5新出的一种协议,底层是基于TCP/IP协议的。跟http没有关系,只是复用了http握手通道,用来升级协议。
884 0
一切皆Socket
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。   socket()函数介绍 socket函数介绍 函数原型 domain type protocol errno 示例   函数原型 socket()函数的原型如下,这个函数建立一个协议族为domain、协议类型为type、协议编号为protocol的套接字文件描述符。
1293 0
socket系列之什么是socket
1、什么是socket Socket是应用层与TCP/IP协议族通信的中间抽象层,它是一组接口,应用层通过调用这些接口实现发送和接收数据。一般这种抽象层由操作系统提供或者由JVM自己实现。
1223 0
Socket通信常用方法
使用tcp协议,链接服务器的方法/// /// 连接使用tcp协议的服务端 /// /// 服务端的ip /// 服务端的端口号 /// public static Socket C...
613 0
5723
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载