关于Java套接字编程的问题

问题描述 投票:0回答:1

我对Java Socket编程有一些疑问,

我有一个创建Java服务器的任务,它将执行以下操作:1.允许多个用户连接2.服务器将收集用户将提供的名称3.一旦连接了所有玩家(设定数量),服务器将进行交互式测验。该测验将输出存储在班级中的问题。

所以现在提出问题。1.如何将变量(例如名称)传递给服务器?我知道它将需要输入和输出流,但是到目前为止,我还没有弄清楚如何将变量链接到套接字线程。

  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. 将这些问题输出给每个用户并分别收集他们的答案的最佳方法是什么?我知道该方法仅对本地测验有用,但它是我要实现的基本概念
java sockets server
1个回答
0
投票

确定-这是一个包含大量后续问题的问题。我这样做已经有好几年了,有时仍然会出现一些问题。让我们想出一些简短的答案:

1-首先要做什么?您需要一台生成线程/工作程序的服务器来接受客户端的联系。外面有很多书籍和文学可以帮助您。寻找NIO-非阻塞I / O(一个好的开始可能是:

2-创建可以在服务器和客户端之间循环的数据包。通常,您使用保存数据的字节缓冲区。尽早考虑对数据进行加密,这样您以后就不必再考虑了(例如,登录数据)

3-设置服务器与客户端之间的通信(登录,senddatapackage,transmissionerrors,注销)。这意味着双方都具有接收-解码-分析和编码-发送数据的功能。

4-最后:构造测验本身(服务器:创建测验,收集答案,确定正确性和失败;客户端:连接到服务器,获取问题,将用户输入发送到服务器,显示结果)

如前所述-构建服务器和客户端很容易,但是您需要考虑许多副作用(大多数客户端的数据连接比较滞后)。这就是为什么您需要非常仔细和精确地构建网络层的原因,否则您将陷入许多麻烦和不眠之夜。

© www.soinside.com 2019 - 2024. All rights reserved.