接收整数序列的服务器

时间:2011-12-21 23:50:51

标签: java sockets stream serversocket

我正在学习Java中的套接字编程。我正在尝试解决以下问题:

  1. 让服务器接受来自一个客户端的连接 时间。那部分解决了。
  2. 现在我希望服务器在文本中接收一系列整数 在套接字上的文件结束情况下将完成的格式 检测到读取器流。
  3. 我正在尝试使用DataInputStream和 DataOutputStream,因为这是我迄今为止唯一知道的事情。
  4. 有人可以帮忙吗?我不知道如何解决问题的第二部分。

    我有以下代码:

      public class Exercise{
    
        public static void main(String args[]) throws Exception {
            ServerSocket server= new ServerSocket(6789);
            while(true) {
                try {
                    Socket aux= server.accept();
                    DataInputStream dis = new DataInputStream(aux.getInputStream());
                    DataOutputStream dos = new DataOutputStream(aux.getOutputStream());
                    while(dis != null) {
                    }
                }
                catch (EOFException e) {
                    out.println("The client finish execution!");
                    continue;
                }
            }
        }
    }
    

2 个答案:

答案 0 :(得分:1)

您需要定义数据交换协议。这就是所有网络应用程序的工作方式。客户端和服务器必须就将要交换的数据的FORMAT和SEQUENCE达成一致。您可以做的最基本的事情是按顺序发送以下内容

START

1,2,3,4,5,6-

STOP

当您收到START时,您知道下一个输入行是您可以使用自定义逻辑解析的整数序列。

一旦收到STOP,您就会知道不会有更多数据,您停止并将响应/确认返回给客户。

答案 1 :(得分:0)

从oracle网站http://www.oracle.com/technetwork/java/socket-140484.html#server查看此页面应该具有设置和从套接字连接接收字符串数据所需的所有信息。

要处理整数序列,取决于格式,因此您需要确保它们与空格或某些标准分隔符(如空格或逗号)分隔(即“1 2 3 4”或“1” ,2,3,4“)然后使用StringTokenizer或类似的类将String分解为单个整数字符串,然后使用Integer.parseInt()解析;