【发布时间】:2011-02-24 19:47:02
【问题描述】:
我正在尝试调整我的简单套接字服务器,以便它可以通过多线程进行多个 TCP 连接,但我似乎无法让它工作。到目前为止,我的代码如下,我不确定从这里去哪里:
import java.net.*;
import java.io.*;
public class DoSomethingWithInput implements Runnable {
private final Socket clientSocket; //initialize in const'r
public void run() {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String nextline;
while ((nextline = in.readLine())!=null) {
System.out.println(nextline);
} //... close socket, etc.
}
}
public class Socket{
public Socket() {
}
@Override
public void run() {
try {
ServerSocket serverSocket = null;
serverSocket = new ServerSocket(5432);
for (;;) {
ServerSocket serverSocket = null;
serverSocket = new ServerSocket(5432);
for (;;) {
Socket clientSocket = null;
clientSocket = serverSocket.accept();
//delegate to new thread
new Thread(new DoSomethingWithInput(clientSocket)).start();
}
}
}catch (IOException e) {
System.err.println("Could not listen on port: 5432.");
System.exit(1);
}
}
}
谁能给我一些关于如何做到这一点的指示,以及为什么我当前的实现不起作用?我在这里查看了 Java 教程 http://download.oracle.com/javase/tutorial/networking/sockets/examples/KKMultiServerThread.java 中的提示,但他们在此处给出的示例似乎使用了许多外部资源和类,如 KnockKnockProtocol 等。
有人能帮我解决这个问题吗?
非常感谢!
【问题讨论】: