首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过数据报套接字的网络发现:多播

通过数据报套接字的网络发现:多播
EN

Stack Overflow用户
提问于 2011-12-09 20:46:09
回答 2查看 691关注 0票数 0

我正在实现一个示例,其中服务器侦听网络中的任何活动客户端。

我使用数据报套接字让服务器进行多播,并使用客户端响应服务器。

代码语言:javascript
复制
public void run() {

    try {
        byte[] recvBuf = new byte[15000];
        DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length);
        DatagramSocket dSock = new DatagramSocket(4445);
        dSock.receive(packet);
        int byteCount = packet.getLength();
        ByteArrayInputStream byteStream = new ByteArrayInputStream(recvBuf);
        ObjectInputStream is = new ObjectInputStream(new BufferedInputStream(byteStream));
        }

}

而在客户端:

代码语言:javascript
复制
public void run() {
    {
     ObjectOutputStream os = null;
        try {
            InetAddress address = InetAddress.getByName("Server's IP");//Note!
            ByteArrayOutputStream byteStream = new ByteArrayOutputStream(15000);
            os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
            os.flush();
              os.flush();
            byte[] sendBuf = byteStream.toByteArray();
            DatagramPacket packet = new DatagramPacket(sendBuf, sendBuf.length, address, 4445);
            int byteCount = packet.getLength();
            }
     }

}

在上面的例子中,客户端必须知道服务器的IP先验(硬编码)。如何修改服务器端的代码,以便服务器将其IP发送给客户端并由客户端对其进行响应?

我可以使用套接字做到这一点,但是否可以使用数据报套接字呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-09 20:52:51

您可以使用DatgramPacket.getAddress()并回复发件人

返回此数据报要发送到的计算机或从其接收数据报的计算机的IP地址。

票数 1
EN

Stack Overflow用户

发布于 2013-05-19 21:09:26

尝试使用InetAddress.getHostAddress获取hostAddress,读取IP部分并将其传递给变量。

代码语言:javascript
复制
InetAddress address = InetAddress.getByName("[variable]");

代码语言:javascript
复制
InetAddress address = InetAddress.getByAddress("[variable]");

我希望这些都能带来更好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8445685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档