我希望ServerSocket接受在同一端口上连接的2个套接字。但是,它不会打印出从BufferedReader读取的内容,并且连接后的套接字仍为空。
这是Serversocket代码:
ServerSocket serverSocket = new ServerSocket(PORT);
try {
Socket con;
int socketCounter= 0;
Socket first, second;
while (socketCounter!= 2) {
con = serverSocket.accept();
String input;
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
if ((input = in.readLine()) != null) {
System.out.println(input);
if (input.equals("first")) {
first = con;
} else if (input.equals("second")) {
second = con;
} else {
continue;
}
}
socketCounter++;
}
} catch (Exception e) {
e.printStackTrace();
}
这是"第一个"
try {
first = new Socket(URL, PORT);
ObjectOutputStream out = new ObjectOutputStream(first.getOutputStream());
ObjectInputStream in = new ObjectInputStream(first.getInputStream());
PrintWriter pw = new PrintWriter(new OutputStreamWriter(first.getOutputStream()));
pw.println("first");
pw.flush();
} catch(Excpetion e){
e.printStackTrace();
}
第二个基本相同:
try {
second = new Socket(URL, PORT);
ObjectOutputStream out = new ObjectOutputStream(second.getOutputStream());
ObjectInputStream in = new ObjectInputStream(second.getInputStream());
PrintWriter pw = new PrintWriter(new OutputStreamWriter(second.getOutputStream()));
pw.println("second");
pw.flush();
} catch(Excpetion e){
e.printStackTrace();
}
我最好想要做这个单线程,但是,如果没有,那很好。有人可以帮忙吗?
答案 0 :(得分:0)
创建ServerSocket时,必须定义将用于侦听客户端请求的服务器套接字的端口。每次ServerSocket收到请求时,该请求都将重定向到ServerSocket定义的另一个端口。通常,我们实例化一个新线程并将其与客户端工作相关联。 检查此示例: http://www.oracle.com/technetwork/java/socket-140484.html