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

相关文章
|
4月前
|
网络协议 C++
什么是Socket?
Socket(套接字)是网络通信的基本单位,它允许在不同计算机之间进行数据交换。Socket在网络编程中起着至关重要的作用,它为应用程序提供了一个机制,通过网络发送和接收数据。简单地说,Socket是进程间双向通信的端点。
34 2
|
网络协议 Unix 程序员
socket到底是什么?
socket到底是什么?
92 1
|
网络协议 安全 前端开发
socket到底是什么? 2
socket到底是什么?
108 0
|
网络协议 安全 Unix
socket 到底是个啥
咸鱼将跟大家打开 socket 的神秘大门,不但要搞清楚 socket 的概念,最好还能够了解它的底层实现
|
网络协议
【Socket】实现MiniHttpServer
【Socket】实现MiniHttpServer
|
移动开发 缓存 网络协议
Socket总结
Socket总结
196 0
Socket总结
|
网络协议 Unix
一切皆Socket
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。   socket()函数介绍 socket函数介绍 函数原型 domain type protocol errno 示例   函数原型 socket()函数的原型如下,这个函数建立一个协议族为domain、协议类型为type、协议编号为protocol的套接字文件描述符。
1467 0
|
网络协议 Unix API
|
Unix Python 网络协议