java - 卡在 socket.accept()

标签 java sockets freeze

您好,我刚刚开始学习 Java Enterprise Edition 类(class)。这是我第一次接触 Java 编程的这一面,所以这对我来说都是全新的。我正在阅读我的教科书,并决定输入给我的代码之一来尝试一下。这段代码不是我的。该程序应输出“你好,输入 BYE 退出”,然后回显在提示符中键入的任何内容。由于某种原因,代码在包含 s.accept 的 try block 处挂起(它输出 1 然后 2 然后挂起)。我只是想知道当我从我的教科书中完全复制它时,是否有人会知道为什么这对我不起作用。这是代码:

import java.io.*;
import java.net.*;
import java.util.*;

public class EchoServer
{
    public static void main (String[] args) throws IOException
    {
    System.out.println("1");
    try (ServerSocket s = new ServerSocket(8189))
            {
    System.out.println("2");
                    try(Socket incoming = s.accept())
                    {
    System.out.println("3");
                            InputStream inStream = incoming.getInputStream();
                            OutputStream outStream = incoming.getOutputStream();

                            try(Scanner in = new Scanner(inStream))
                            {
                            PrintWriter out = new PrintWriter(outStream,true);
                            out.println("Hello! Enter BYE to exit.");
                            boolean done = false;

                                    while(!done && in.hasNextLine())
                                    {

                                            String line = in.nextLine();
                                            out.println("Echo: " + line);
                                                    if(line.trim().equals("BYE"))
                                                            done = true;
                                    }
                            }
                    }

            }
}
} 

我确定这是一个相对容易解释的东西,我只是新手,想知道为什么当我尝试运行它时它不起作用。

最佳答案

课本上有对应的EchoClientdemo吗?

Socket.accept() 按照设计挂起,直到客户端连接到正在等待的端口,在本例中为端口 8189。您的程序运行良好

关于java - 卡在 socket.accept(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247832/

相关文章:

java - 如何将 28 天添加到 java for android 中的日期

java - Getter 和 Setter 函数帮助和操作方法

java - 查找当年询问最多次数的标签名称并打印计数

unit-testing - 需要 TCP/IP 服务器模拟/ stub 软件

java - JPanel 在尝试绘制时卡住了我的整个应用程序

java - 为什么一个java类可以直接使用同一个包下的另一个类而无需显式导入该类?

java - 哪种套接字编程最好(TCP/UDP)?

c++ - GoDaddy VPS 上的 UDP 服务器

emacs - 每次我在 emacs 中输入评论时,tramp 都会卡住它

eclipse - 无法从 Eclipse 启动 Weblogic 服务器