Java 服务器套接字不';我不接受客户

Java 服务器套接字不';我不接受客户,java,sockets,Java,Sockets,我正在学习java中的套接字。我可以将客户端套接字连接到在线服务器,但我可以将它们连接到我自己的服务器套接字 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; class Blargh2 { public static void main(String[] args) { Socket client = null; ServerSocket

我正在学习java中的套接字。我可以将客户端套接字连接到在线服务器,但我可以将它们连接到我自己的服务器套接字

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

class Blargh2 {
    public static void main(String[] args) {
        Socket client = null;
        ServerSocket server = null;
        System.out.println("Line one reacehd!");
        try {
            server = new ServerSocket(4445);
        } catch (Exception e) {
            System.out.println("Error:" + e.getMessage());
        }
        System.out.println("Line two reacehd!");
        try {
            client = server.accept();
        } catch (IOException e) {
            System.out.println("Accept failed: 4444");
            System.exit(-1);
        }

        System.out.println("Line three reacehd!");
        try {
            server.close();
            client.close();
        } catch (IOException e) {
            System.out.println("Accept failed: 4444");
            System.exit(-1);
        }
    }
}
程序到达第1行和第2行,但从未到达第3行!
谁能帮我解决这个问题?防火墙还允许此连接…

它永远不会到达第3行,因为您需要一个远程TCP套接字(尽管它可以是本地的,用于测试)来连接端口4445上的套接字。您接受服务器上的端点套接字,用于与远程客户端通信。实际上这里没有客户机,因此它会无限期地等待或直到
accept()
调用超时。

它永远不会到达第3行,因为您需要远程TCP套接字(尽管它可以是本地的,用于测试)来连接端口4445上的套接字。您接受服务器上的端点套接字,用于与远程客户端通信。这里实际上没有客户机,因此它会无限期地等待,或者直到
accept()
调用超时。

尝试运行此代码,在看到第2行执行后,再运行windows命令:

telnet本地主机4445


然后您应该看到第3行已执行。

尝试运行此代码,在看到第2行已执行后,再运行windows命令:

telnet本地主机4445


然后您将看到第3行被执行。

您是否注意到您的ServerSocket正在端口4445上运行?您如何连接到您的服务器?telnet?我该如何连接?这是我第一次做插座。我认为我要做的唯一一件事就是创建服务器,然后使用accept()方法连接套接字。您是否注意到您的ServerSocket正在端口4445上运行?您如何连接到服务器?telnet?我该如何连接?这是我第一次做插座。我认为我唯一要做的就是创建服务器,然后使用accept()方法连接套接字。我定义了一个客户端套接字:“socket client=bull;”然后我尝试使用accept()方法将其连接到服务器。在accept()方法之前,我添加了以下内容:“client=newsocket”(“127.0.0.1”,4446);”,这样代码就可以在本地工作了!!现在我明白你说的“这里没有客户”是什么意思了。。。关于telnet:我有一些问题。telnet是一种协议吗?telnet命令的作用是什么?这些套接字使用telnet吗?如果你回答这些问题,我将非常感谢你的帮助。非常感谢。Telnet只使用标准的基于线路的协议,这就是为什么像FTP、IRC或HTTP这样的子协议可以通过它进行通信的原因。这意味着所有线路都被发送和接收。当您键入内容并按enter键时,它会将该行发送到服务器,然后服务器会将内容发送回。您应该将套接字流封装在适当的面向行的抽象中,以使您的生活更轻松。查看此页面了解更多详细信息:我定义了一个客户端套接字:“socket client=bull;”,然后尝试使用accept()方法将其连接到服务器。在accept()方法之前,我添加了以下内容:“client=newsocket”(“127.0.0.1”,4446);”,这样代码就可以在本地工作了!!现在我明白你说的“这里没有客户”是什么意思了。。。关于telnet:我有一些问题。telnet是一种协议吗?telnet命令的作用是什么?这些套接字使用telnet吗?如果你回答这些问题,我将非常感谢你的帮助。非常感谢。Telnet只使用标准的基于线路的协议,这就是为什么像FTP、IRC或HTTP这样的子协议可以通过它进行通信的原因。这意味着所有线路都被发送和接收。当您键入内容并按enter键时,它会将该行发送到服务器,然后服务器会将内容发送回。您应该将套接字流封装在适当的面向行的抽象中,以使您的生活更轻松。查看此页面了解更多详细信息:当我使用telnet时,到底发生了什么?为什么客户端不只用accept()方法进行连接呢?telnet就是客户端。您编写的是一个服务器,您还需要编写一个客户端来连接到该端口。Telnet作为客户端连接到该端口。当我使用Telnet时,到底发生了什么?为什么客户端不只用accept()方法进行连接呢?telnet就是客户端。您编写的是一个服务器,您还需要编写一个客户端来连接到该端口。Telnet作为客户端连接到该端口。