socket基本运用和踩过的坑

socket可以用来传输信息,如我们经常通讯用到的聊天室,网关向某ip端口发送信息等等。

通讯一般情况分为两端,客户端和服务端。客户端负责发送消息到服务端。服务端接受消息展示。此篇着重讲解一下服务端接受消息遇到的坑。

先简单讲解一下客户端发送给服务器的代码

发送的信息byte,服务器的ip,port生成DatagramPacket,再通过DatagramPacket发送。

结束,讲解一下服务端接收

作者服务端监听8087端口,其中accept方法会进行监听,如果未监听到信息会一直阻塞,直到监听有数据再继续向下执行。

监听到有数据后肯定会继续循环再次监听,但一次循环过后需要关闭连接,否则会报错。

在最后一步的时候用close关闭连接。好了,坑就在关闭连接上。因为socket监听会超时,如果超时的话socket会自动关闭连接,如果在超时的情况最后finally的时候还继续关闭连接,就会出现问题。所以我们需要在关闭连接的时候,测试socket是否断开

我们在关闭之前,用socket发送一个字节的数据。如果发送不成功会报错异常,证明socket已经关闭。如果成功则证明未关闭,这个时候我们再去关闭socket的连接。

你可能感兴趣的:(socket基本运用和踩过的坑)