我已经编写了一个基本代码,使用这个link在Java中从Windows机器多播UDP数据包。.接收器是几部安卓手机,它们运行同一链接中给出的接收器代码。这是发件人代码:intmcPort=4446;StringmcIPStr="225.4.5.6";InetAddressgroup=InetAddress.getByName(mcIPStr);DatagramSocketudpSocket=newDatagramSocket();byte[]c="SENT".getBytes();DatagramPacketpacket=newDatagramPacket(c,c.length,gro
我有3个节点A、B和C,它们具有各自的端口号。我正在尝试编写一个接受3个参数的java程序:它的节点名称和它的2个相邻节点的端口并向它们广播一个字符串"HelloI'mA"(所以A会广播给B和C)。它将每3秒执行一次。该程序将在3个不同的实例中运行。收到字符串后,它将打印从“Receivedstring”接收到的节点(端口B的示例)。我很难实现这个,不过我听说过使用UDP的叫做multicasting的东西。这是我到目前为止的工作,我做错了什么?classUDP{publicstaticvoidmain(String[]args)throwsException{StringnodeNa
我正在尝试发送一个DatagramPacket,然后必须等待来自服务器的确认,以便我知道我是否必须重新发送相同的数据包或发送下一个数据包......我在客户端使用相同的套接字,发送数据包并接收确认(ack),在服务器端,另一个套接字用于接收数据包,然后发送致谢客户..第一个问题是客户端正在发送数据包,服务器正在接收它,然后向客户端发送确认,但客户端在收到确认包时阻塞。我正在制作一些System.out.println来确定问题出在哪里,但我找不到解决这个问题的方法。第二个问题是服务器仍然总是在接收数据,并且不要等待客户端发送一些东西,我检查了因为我得到了那些行(比如“得到了长度为xxx
这是在回答BufferedWriteronlyworksthefirsttime时出现的据我对JavaDoc的理解(网上的许多帖子都证实了这一点)DatagramPacket不应接受超过其当前大小的数据。DatagramSocket.receive的文档说Thismethodblocksuntiladatagramisreceived.Thelengthfieldofthedatagrampacketobjectcontainsthelengthofthereceivedmessage.Ifthemessageislongerthanthepacket'slength,themessa
我正在尝试使用UDP将序列化对象从服务器进程发送到Java中的客户端进程。问题是客户端在接收方法上被阻塞。有人可以帮忙吗?!这里是发送对象的服务器代码:ClientModelC1=newClientModel(100,"Noor","Noor",38,38,"asd");ByteArrayOutputStreambaos=newByteArrayOutputStream();ObjectOutputStreamoos=newObjectOutputStream(baos);oos.writeObject(C1);oos.flush();byte[]Buf=baos.toByteArra
我目前正尝试在Android上为我的udp服务器实现udp打洞。事情应该是这样的:客户端(在nat后面;可能是3G,..)向服务器发送一个DatagramPacket(服务器有一个公共(public)ip;端口也被称为45555)。客户端以给定的延迟重复发送数据报一旦服务器收到数据报,它就会每500毫秒发回一次数据报(“信号”)。如果打洞成功,客户端应该收到这些信号这是我当前的客户端实现(Android)://inonCreate()DatagramSocketsocket=newDatagramSocket(46222);socket.setSoTimeout(2000);final
我正在使用Java应用程序将UDP数据包发送到Android设备。我有另一个Java应用程序接收这些UDP数据包并显示其数据-非常简单。现在我正在研究一些路由算法-因此,如果知道UDP数据包自发送以来经过了多少跳,那将是一件好事。我的想法是只读出数据包的TTL(生存时间)值并显示它。您知道纯Java是否可行吗?类(class)DatagramPacket根本没有给出任何提示。我猜这是不可能的,因为这些信息可能已经在较低层被删除,但我只是想确定一下。:-) 最佳答案 TTLfield如您所知,是底层IP协议(protocol)(使
我是wifidirect的新手,我希望能够广播一条消息,因为我有一个时间轴,当我单击“发布”按钮时,我希望所有连接的设备都在其时间轴上显示该消息。我能够点对点发送数据。我搜索过这个主题,发现使用UDP是一个不错的选择,但我不知道如何在wifidirect中实现它。我发现这段代码在wifi上使用UDP获取广播地址InetAddressgetBroadcastAddress()throwsIOException{WifiManagerwifi=mContext.getSystemService(Context.WIFI_SERVICE);DhcpInfodhcp=wifi.getDhcpI
我正在使用以下代码将DatagramPacket发送到给定地址:InetAddressaddress=InetAddress.getByName(anIPAddress);DatagramSocketsocket=newDatagramSocket();DatagramPacketpacket=newDatagramPacket(packetBytes,packetBytes.length,address,port);socket.send(packet);socket.close();它工作正常,但是为什么这段代码在没有可用的互联网连接时不会抛出任何Exception?我关闭了Wi-
我目前正在编写一个客户端-服务器应用程序,我问自己是否有更好的方法在本地网络中查找服务器然后遍历所有可用的IP地址并查看是否提供了正确的答案? 最佳答案 您可能想查看UDP广播,您的服务器会在其中宣布自己,而手机会监听广播。Thereisanexample来自Boxee远程项目,引用如下。获取广播地址您需要访问wifi管理器以获取DHCP信息并从中构建广播地址:InetAddressgetBroadcastAddress()throwsIOException{WifiManagerwifi=mContext.getSystemSer