smartboot 开源组织 smartboot 开源组织
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
  • smart-socket 首页
  • 概要

    • 关于 smart-socket
    • 我们的用户
  • 快速上手

    • 🚩五分钟上手
    • 🚩通信协议
    • 性能压测
    • 新手常见问题
  • 高级进阶

    • 1.状态机
    • 2.服务端绑定网卡
  • 插件

    • 1. 关于插件💬
    • 2. 心跳插件
    • 2. 闲置超时插件
    • 3. 通信调参插件
    • 4. 黑名单插件🛡
    • 5. 加密通信插件🛡
    • 6. 流量防控插件🛡
    • 7. 码流监测插件🛡
    • 8. proxy-protocol插件
  • 公众号

    • 💰单机百万长连接背后的故事
    • 💰揭秘百万长连接背后的黑科技
    • 💰让通信数据无所遁形
    • 性能分析的一柄利刃
    • 💰smart-socket的那点事之内存池
  • smart-socket
  • 高级进阶
三刀
2022-11-26

2.服务端绑定网卡

在多网卡环境下,我们可能通过指定网卡所对应的 IP 提供 Server 服务。此时,你所需要做的就是选择带host参数的AioQuickServer构造方法。

例如:当前服务器存在两个IP,分别为:127.0.0.1 和192.168.3.29。

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether f8:4d:89:8c:43:c8
	inet6 fe80::c98:fb16:21e8:8859%en0 prefixlen 64 secured scopeid 0xe
	inet 192.168.3.29 netmask 0xffffff00 broadcast 192.168.3.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
	inet 127.0.0.1 netmask 0xff000000
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	nd6 options=201<PERFORMNUD,DAD>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

倘若我们在构造AioQuickServer示例时指定了host为192.168.3.29,便可将端口号为:8888 的 Server 服务绑定在 IP 为 192.168.3.29 对应的网卡上。

new AioQuickServer("192.168.3.29",8888, new StringProtocol(), processor);
1

如果客户端此时使用localhost去请求端口:8888,则会触发异常:

Caused by: java.net.ConnectException: Connection refused
	at sun.nio.ch.Net.connect0(Native Method)
	at sun.nio.ch.Net.connect(Net.java:482)
	at sun.nio.ch.Net.connect(Net.java:474)
	at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:647)
	at org.smartboot.socket.enhance.EnhanceAsynchronousSocketChannel.doConnect(EnhanceAsynchronousSocketChannel.java:321)
	at org.smartboot.socket.enhance.EnhanceAsynchronousSocketChannel.connect(EnhanceAsynchronousSocketChannel.java:224)
	at org.smartboot.socket.transport.AioQuickClient.start(AioQuickClient.java:146)
	at org.smartboot.socket.transport.AioQuickClient.start(AioQuickClient.java:197)
1
2
3
4
5
6
7
8
9
1.状态机
1. 关于插件💬

← 1.状态机 1. 关于插件💬→

Theme by Vdoing | Copyright © 2017-2025 三刀
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式