java实现socket连接方法封装_Java基础系列:Socket编程

俗世游子:专注技术研究的程序猿

说到前面的话

没有实战案例的理论基础都是在耍流氓,所以今天主要是想通过这里的案例能够让大家加深对之前的理解

本节我们会一步步实现一个点对点聊天小程序

Java中的Socket实现

InetAddress

InetAddress是Java对IP地址的封装,这个类是一个基础类,下面的ServerSocket和DatagramSocket都离不开这个类

InetAddress无法通过new的方式来初始化,只能提供过其提供的静态方法来调用:

// 获取本地地址

InetAddress localHost = InetAddress.getLocalHost();

652a8ece286c8140198cf0bf5ea55979.png

这里是InetAddress的一些方法:

// 主机名:DESKTOP-ATG4KKE

System.out.println("主机名:" + localHost.getHostName());

// IP地址:192.168.87.1

System.out.println("IP地址:" + localHost.getHostAddress());

// 是否正常:true

System.out.println("是否正常:" + localHost.isReachable(5000));

这里是我测试时的输出,

关于isReachable()的方法,用来检测该地址是否可以访问,由此我们可以做一些健康检查操作,比如:

// 通过主机IP或者域名来得到InetAddress对象

InetAddress inetAddress = InetAddress.getByName("192.168.87.139");

System.out.println("是否正常:" + inetAddress.isReachable(5000));

在5s之内尽最大可能尝试连接到主机,如果没有就认为主机不可用,这里受限于防火墙和服务器配置

当然,做健康检查这种方法还是low了点,生产环境中肯定不会这么干

PS: 生产环境的网络操作不会使用到这节里的东西,大部分情况下采用的都是Netty

ServerSocket

ServerSocket是服务端套接字,是基于TCP/IP协议下的实现

初始化

通常我们这样来构建:

ServerSocket serverSocket = new ServerSocket(9999);

ServerSocket serverSocket = new ServerSocket();

serverSocket.bind(new InetSocketAddress(9999));

这样就完成了服务端的初始化,并且将端口9999绑定起来

等待连接

如果客户端想要和ServerSocket建立连接,我们需要这么做

for(;;) {

Socket socket = serverSocket.accpet();

// Socket[addr=/0:0:0:0:0:0:0:1,port=62445,localport=9999]

System.out.println(socket);

}

accpet()是侦听与ServerSocket建立的连接,这个方法是一个阻塞方法,会一直等待连接接入进来

如果有连接接入进来,我们可以通过返回值来得到当前接入进来的Socket

通信

在网络中传递数据其实也是按照IO流的方式进行传递的,但是我们只能获取到字节流:

InputStream inputStream = socket.getInputStream();

OutputStream outputStream = socket.ge

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值