簡體   English   中英

Java 連接后套接字關閉?

[英]Java Socket Closes After Connection?

為什么這個端口/套接字會在客戶端建立連接后關閉?

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 的末尾並關閉。

您需要向其添加一個 Stream 以響應客戶端。

試試這個:

Socket accepted = serverSocketPort.accept();
InputStream inStr = accepted.getInputStream();

該程序運行得非常好。 一旦客戶端連接或ServerSocket超時,它就會停止。 你的目標是什么?

@馬修。

恕我直言,喬爾對你的問題有最接近的答案。

“連接已關閉,因為程序在接受連接后存在”

通常,accept 是在一個循環中運行的,這樣服務器就會一直監聽端口上的連接請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM