我对Java Socket编程有一些疑问,
我有一个创建Java服务器的任务,它将执行以下操作:1.允许多个用户连接2.服务器将收集用户将提供的名称3.一旦连接了所有玩家(设定数量),服务器将进行交互式测验。该测验将输出存储在班级中的问题。
所以现在提出问题。1.如何将变量(例如名称)传递给服务器?我知道它将需要输入和输出流,但是到目前为止,我还没有弄清楚如何将变量链接到套接字线程。
//Game Question Class
public class gameQuestion extends Server {
public String questionContent = "Q";
public int questionAnswer = 0;
public static void setQuestion() {
//Sets content of questions
gameQuestion Question1 = new gameQuestion();
Question1.questionContent = ("What is 2 - 1?");
Question1.questionAnswer = (1);
}
//Server Class
System.out.println(Question1.questionContent);
answer = scan.nextInt();
if (answer == Question1.questionAnswer) { // How can I link this to the class above?
System.out.println("Congratulations, that's correct!");
points++;
} else {
System.out.println("That's incorrect, the answer was: " + Question1.questionAnswer);
}
确定-这是一个包含大量后续问题的问题。我这样做已经有好几年了,有时仍然会出现一些问题。让我们想出一些简短的答案:
1-首先要做什么?您需要一台生成线程/工作程序的服务器来接受客户端的联系。外面有很多书籍和文学可以帮助您。寻找NIO-非阻塞I / O(一个好的开始可能是:
2-创建可以在服务器和客户端之间循环的数据包。通常,您使用保存数据的字节缓冲区。尽早考虑对数据进行加密,这样您以后就不必再考虑了(例如,登录数据)
3-设置服务器与客户端之间的通信(登录,senddatapackage,transmissionerrors,注销)。这意味着双方都具有接收-解码-分析和编码-发送数据的功能。
4-最后:构造测验本身(服务器:创建测验,收集答案,确定正确性和失败;客户端:连接到服务器,获取问题,将用户输入发送到服务器,显示结果)
如前所述-构建服务器和客户端很容易,但是您需要考虑许多副作用(大多数客户端的数据连接比较滞后)。这就是为什么您需要非常仔细和精确地构建网络层的原因,否则您将陷入许多麻烦和不眠之夜。