【发布时间】: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