socket总结

一、socket:又被称为套接字。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。


二、个人主要是写Java,所以这里重点讲Java Socket。

    (1)socket是java.net包下的一个类,另外还有一个与之相关的类---serverSocket(实现服务器套接字,用于服务器端)。这里重点讲一下socket。

        1、socket的建立。可以通过以下几种方式:

           a、Socket socket = new Socket(); //建立一个socket连接

              socket.connect(new InetSocketAddress(host, port),timeout);  //将socket连接到服务器上的某个端口并且设置连接的超时时间

           b、Socket socket = new Socket(host,port); //建立一个连接到指定服务器的指定端口上socket

        总结:当需要设置连接的超时时间时,采用第一种;否则采用第二种

        2、一些重要方法的使用:

           设置读取数据的超时时间:setSoTimeout(int timeout)  以毫秒为单位

           判断socket是否处于连接状态:boolean isConnected = socket.isConnected() && !socket.isClosed();

           关闭socket:close();

           获取输出流:socket.getOutputStream()

           获取输入流:socket.getInputStream()

           判断输入流通道是否关闭:socket.isInputShutdown()

           判断输出流通道是否关闭:socket.isOutputShutdown()

        3、socket的异常捕获:

           UnknownHostException  未知主机异常

           ConnectException  连接异常

           SocketTimeoutException  请求超时异常

           IOException  IO异常


           IOException---->UnknownHostException

                      ---->InterruptedIOException---->SocketTimeoutException

                      ---->SocketException---->BindException

                                          ---->ConnectException

        4、通常实际开发时,我们用socket会结合规定的通信协议进行组包、发包、收包、拆包(解析)、最终得到我们要的数据。通常一个数据包分成包头和包体,我们收包的时候一定要保证完整性,即保证数据接收完整,这里我们可以通过我们获取的数据包的长度作为判断条件(一直到接收完为止)。服务器在发送数据的时候由于网络情况、主机拥堵等情况,可能不会一次发送整个数据,而是分包。


    (2)serverSocket:

        此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

        在用的时候,ServerSocket server = new ServerSocket(port);  //定义一个serverSocket监听端口port上。  Socket socket = server.accept();  //server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值