开发者社区> 技术小牛人> 正文

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

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

相关文章
socket系列之什么是socket
1、什么是socket Socket是应用层与TCP/IP协议族通信的中间抽象层,它是一组接口,应用层通过调用这些接口实现发送和接收数据。一般这种抽象层由操作系统提供或者由JVM自己实现。
1258 0
请说明什么是socket?
    所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。     应用程序通常通过"套接字"向网络发出请求或者应答网络请求。      以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。     ServerSocket用于服务器端;     Socket是建立网络连接时使用的。     在连接成功时,
1156 0
Socket总结
Socket总结
125 0
Socket(一)
  我刚开始学习,有什么不对的还希望大家指出。   由于客户端的编写与服务端的编写互相影响,所以两个的代码我是交互着写下的。   下面写的是一个客户端与一个服务端的例子。   对服务端,首先创建ServerSocket的实例,参数端口号的值是0-65535,但是1024以下的端号口会被系统征用,所以我给它分配的端口号是10086。
598 0
Orphan socket的产生
1. Orphan socket 不属于任何进程的socket叫orphan socket。这里顺便一下讨论orphan socket,因为很多网络资源不足导致的错误都和“孤儿socket”有关。
901 0
Socket
1.主机名查询函数 gethostname(cha* **R *name,int namelen) 参数说明:   name: char数组   namelen:char数组大小 2.
950 0
【Socket】实现MiniHttpServer
【Socket】实现MiniHttpServer
69 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载