我找到了发送套接字的jsp代码,并将IP更改为255.255.255.255,但结果是:' Network is unreachable
'。
代码是:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.util.*,java.net.*,java.io.*,java.lang.*" errorPage="" %>
var errors="";
<%
try{
int character;
Socket socket = new Socket("255.255.255.255", 10000);
InputStream inSocket = socket.getInputStream();
OutputStream outSocket = socket.getOutputStream();
String str = "Message";
byte buffer[] = str.getBytes();
outSocket.write(buffer);
while ((character = inSocket.read()) != -1) {
out.print((char) character);
}
socket.close();
}
catch(java.lang.Exception e){
%>
errors="Something is wrong!"+ "<%= e.getMessage() %>";
<%
}
我的tomcat是版本6(我猜......),
或者如果它不可能(我听说有人说jsp与java不同,它只用于演示),我可以编写一个java类(使用DatagramSocket)来显示接收数据并让我的jsp导入上课并获取数据?
任何建议都将受到赞赏。
答案 0 :(得分:0)
您应该使用MulticastSocket。这是一个例子:
public void send(String message) throws IOException {
MulticastSocket s = new MulticastSocket();
byte[] msg = message.getBytes();
DatagramPacket pack = new DatagramPacket(msg, msg.length, InetAddress.getByName("228.5.6.7"), 12345);
s.send(pack);
s.close();
}
void recieve() throws IOException {
MulticastSocket s = new MulticastSocket(12345);
InetAddress address = InetAddress.getByName("228.5.6.7");
s.joinGroup(address);
byte[] buf = new byte[1024];
DatagramPacket pack = new DatagramPacket(buf, buf.length);
s.receive(pack);
String data = new String(pack.getData());
System.out.println(data);
s.leaveGroup(address);
s.close();
}
答案 1 :(得分:0)
你说你已经看过这些链接,但我认为你没有仔细阅读this one或者至少你没有理解它。
我将尝试解释:当您通过new Socket(...)
创建套接字时,您将创建一个TCP套接字。 TCP是一种连接协议,您无法通过TCP进行广播
因此,通过正确使用UDP套接字(DatagramSocket
)来修复代码,确保通过socket.setBroadcast(true);
启用广播,如果仍然无效,请提供有关剩余问题的详细信息。
我在这里没有提供任何代码,因为所有相关代码都已经在参考文章中。