我有一个服务器和一个客户端。服务器能够处理多个请求。客户端打开一个套接字并发送一个字节流。服务器正在处理时,它的行为不正确。从客户我发送以下几行
将此添加为您的客户
标题:客户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);
}
}
但是每次在服务器中我都会得到奇怪的输出。我认为在线程环境中(在运行方法中)处理它时,我没有正确处理字节数组或在服务器中错误地处理它。你能告诉我哪里出错了。