【问题标题】:problems with my socket thread我的套接字线程有问题
【发布时间】:2014-07-28 11:52:51
【问题描述】:

自从我开始玩套接字以来,我遇到了很多麻烦,我已经设法完成了我从在线教程和社区的帮助中学到的基本任务,但我意识到我现在需要使用线程这又增加了一层复杂性。以下是我根据需要修改的线程,但它没有按预期进行。我在代码中标记了程序运行的距离,但它停在了重要的位置。有人可以看看并告诉我为什么我的程序在这里停止吗?提前致谢。

public void run() {
try {
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    out = new PrintWriter(socket.getOutputStream(), true);

    /// RUNS THIS FAR
    String score = (in.readLine());
    scor = Long.parseLong(score);
        leaderboard(); // A METHOD THAT TAKES LONG SCORE, CALCULATES RANKING AND RETURNS A STRING CALLED RANK


        System.out.print("Sending rank: " + rank);
        out.println(rank);
}
catch(IOException e) {
    System.out.println("PrintWriter error");
}

//out.println("Hello");

try {
    socket.close();
}
    catch(IOException e) {
    System.out.println("Failed to close, oddly...");
}
}

【问题讨论】:

  • “程序运行多远”是什么意思?如果抛出异常,您应该使用e.printStackTrace(); 并发布生成的异常。
  • 我的意思是我标记下的代码不会执行。我实际上还没有遇到过这个短语......我认为堆栈是要执行的任务的顺序。 trace() 部分是什么意思?抱歉,我是套接字新手,很难理解。这个 printStackTrace() 是一个必须去学习的主题吗?谢谢。
  • 是的,堆栈跟踪是必须学习的主题。
  • 我已经开始阅读一篇文章了。谢谢。
  • 我现在玩了一点。它是一个 numberFormatException - 在 java.lang.Long.parseLong(unknown Source)。看起来当我将字符串分数转换为长分数时,它无法识别字符串分数。看起来就是这样。

标签: java multithreading sockets networking


【解决方案1】:

在玩了一会儿之后,似乎通过将有问题的字符串放入它自己的 try/catch 块中已经解决了这个问题。一切都很顺利。无论如何,谢谢大家,printStackTrace() 也教会了我更多。

【讨论】:

  • 这个答案什么也没解释,你的问题也没有。
  • 我仍然不明白为什么使用 try/catch 块有效,但它就像魔术一样。很抱歉您对问题的误解,我只是问为什么我的代码没有完全运行(不读取输入)。至于我对问题的回答,这样做只是为了节省人们在其他人问题上的时间,我的问题已经解决了,我能做的至少是自己了解它为什么有效,而不是依靠你们做我的工作
猜你喜欢
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 2019-09-21
  • 2015-02-06
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多