0

我有一个服务器和一个客户端。服务器能够处理多个请求。客户端打开一个套接字并发送一个字节流。服务器正在处理时,它的行为不正确。从客户我发送以下几行

将此添加为您的客户

标题:客户1

5个不同的客户

我正在使用字符串生成器来构建如上所述的格式化字符串。

 for (i=0; i<6; i++)
 {
     Socket socket = new Socket(host, port);
     StringBuilder sb = new StringBuilder();
                    sb.append("ADD this as your client ");
                    sb.append("\r\n");
                    sb.append("Title: Client");
                    sb.append(i);
                    sb.append("\r\n");
                    String ToSend = sb.toString();


                    /// New Additions
                    byte[] byteArray = ToSend.getBytes();
                    OutputStream os = socket.getOutputStream();
                    DataOutputStream dos = new DataOutputStream(os);
                    dos.writeInt(byteArray.length);
                    dos.write(byteArray,0,byteArray.length);
                    socket.close();
                   }

在服务器中,我正在这样阅读。

 public static void main(String[] args) {
    Sampleserver file_rec = new Sampleserver();
   try {
  ServerSocket listener = new ServerSocket(port);

  while (true) {
    file_rec.socket = listener.accept();  
    new Thread(file_rec).start();
  }
}
catch (java.lang.Exception ex) {
  ex.printStackTrace(System.out);
}

}
public void run() {
try {
    InputStream is = socket.getInputStream();
    DataInputStream dis = new DataInputStream(is);
    int length = dis.readInt();
    System.out.println("Length value is " + length);
    byte[] mybytearray = new byte[length];


   int bytesRead = is.read(mybytearray, 0, length);

    String s = new String(mybytearray, 0, length);
    System.out.println(s);
    if (s.contains("ADD"))
    {
        System.out.println("Inside ADD. ");

    }
    else
    {
        System.out.println("Default ");
    }

 }

catch (java.lang.Exception ex) {
  ex.printStackTrace(System.out);
}

}

但是每次在服务器中我都会得到奇怪的输出。我认为在线程环境中(在运行方法中)处理它时,我没有正确处理字节数组或在服务器中错误地处理它。你能告诉我哪里出错了。

4

0 回答 0