我已经实现了一个服务器应用程序,它使用线程允许多个节点连接。服务器在连接时接收节点信息。我想要做的是将节点套接字添加到另一个类中的LinkedList。
这里是节点管理器的代码:
import java.io.*;
import java.net.*;
public class NodeManager extends Thread{
private DatagramSocket socket = null;
public NodeManager() throws IOException {
this("ServerThread");
}
//creates server socket for cmmunication with nodes
public NodeManager(String name) throws IOException {
socket = new DatagramSocket(3456);
}
@Override
public void run() {
while(true){
try {
byte[] buf = new byte[1024];
// receive request
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
//Get the nodes address
InetAddress address = packet.getAddress();
//Get the nodes Port
//The port int is what i would like to extract and add to a linked list in another class
int port = packet.getPort();
//Convert the packets data into a string
String received = new String(packet.getData(), 0, packet.getLength());
System.out.println(received);
//Send message back to node
String message = "10";
packet = new DatagramPacket(message.getBytes(), message.getBytes().length, address, port);
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
答案 0 :(得分:0)
其他类必须为该LinkedList提供一个getter,以便您可以获取实例并将int添加到其中。
或者它必须提供一些其他方法来向其列表中添加/删除整数。
答案 1 :(得分:0)
我建议您使用类实现std::ostringstream
,而不是扩展Runnable
。
您必须在您的类中添加一个私有成员,并提供一个同步的getter来访问它。确保使用线程安全列表实现(例如Thread
)。