Java套接字在连接后关闭?
为什么客户端建立连接后,此端口/套接字会关闭Java套接字在连接后关闭?,java,Java,为什么客户端建立连接后,此端口/套接字会关闭 package app; import java.io.*; import java.net.*; public class socketServer { public static void main(String[] args) { int port = 3333; boolean socketBindedToPort = false; try { ServerSocket ServerSocket
package app;
import java.io.*;
import java.net.*;
public class socketServer {
public static void main(String[] args) {
int port = 3333;
boolean socketBindedToPort = false;
try {
ServerSocket ServerSocketPort = new ServerSocket(port);
System.out.println("SocketServer Set Up on Port: " + port);
socketBindedToPort = true;
if(socketBindedToPort == true) {
Socket clientSocket = null;
try {
clientSocket = ServerSocketPort.accept();//This method blocks until a socket connection has been made to this port.
System.out.println("Waiting for client connection on port:" + port);
/** THE CLIENT HAS MADE A CONNECTION **/
System.out.println("CLIENT IS CONENCTED");
}
catch (IOException e) {
System.out.println("Accept failed: " + port);
System.exit(-1);
}
}
else {
System.out.println("Socket did not bind to the port:" + port);
}
}
catch(IOException e) {
System.out.println("Could not listen on port: " + port);
System.exit(-1);
}
}
}
未经测试,但我很确定这是因为您的程序中没有其他内容。一旦ServerSocketPort.accept();完成后,程序将到达main的末尾并关闭。未经测试,但我很确定这是因为您的程序中没有其他内容。一旦ServerSocketPort.accept();完成后,程序将到达main的末尾并关闭。您需要向其中添加一个对客户端做出反应的流 试试这个:
Socket accepted = serverSocketPort.accept();
InputStream inStr = accepted.getInputStream();
您需要向其中添加一个对客户端作出反应的流 试试这个:
Socket accepted = serverSocketPort.accept();
InputStream inStr = accepted.getInputStream();
程序运行得非常好。一旦客户端连接或服务器套接字超时,它就会停止。你的目标是什么?程序运行得非常好。一旦客户端连接或服务器套接字超时,它就会停止。你在这里的目标是什么?@Matthew 伊姆霍,乔尔对你的问题有最接近的答案 “连接已关闭,因为程序在接受连接后存在” 通常,accept是在循环中运行的,因此服务器会一直侦听端口上的连接请求 伊姆霍,乔尔对你的问题有最接近的答案 “连接已关闭,因为程序在接受连接后存在”
通常,accept是在循环中运行的,因此,服务器会一直侦听端口上的连接请求我如何添加一个侦听器,以便在客户端与它建立连接时作出反应?@Matthew抱歉,我指的是流。你必须阅读客户端发送给你的内容。我如何添加一个侦听器,当客户端连接到它时,它会做出反应?@Matthew抱歉,我指的是流。你必须阅读客户发给你的东西。只是一张便条,你的打印顺序不对。您应该将“等待客户端连接…”放在clientSocket=ServerSockPort.accept()之前;请注意,你的打印顺序不对。您应该将“等待客户端连接…”放在clientSocket=ServerSockPort.accept()之前;