我正在为多个用户测试聊天应用程序。所以我想要的是:
我正在尝试通过登录来运行我的聊天应用程序,只有一个用户在for循环中进行1000次聊天。这是我的代码部分。
public void LoginChatConnect() {
try {
// while(true){
for(int i=0;i<1000;i++){
System.out.println("inside loginChatLogin");
String userId = "Rahul";
String password = "rahul";
sockChatListen = new Socket("localhost", 5004);
// /sockChatListen.
dosChatListen = new DataOutputStream(
sockChatListen.getOutputStream());
disChatListen = new DataInputStream(sockChatListen.getInputStream());
dosChatListen.writeUTF(userId);
dosChatListen.writeUTF(password);
// System.out.println(dosChatListen.toString());
dosChatListen.flush();
// sockChatListen.close();
boolean b = sockChatListen.isClosed();
System.out.println("connection open**********************" + b);
sockChatListen.close();
System.out.println("connection closed**********************" + b);
count++;
System.out.println("count" + count);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在上面的代码中,我只是尝试仅为一个用户登录1000次。但在某些登录后,它给了我这个套接字错误。
java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
这里我尝试使用单个端口5004创建连接。为什么我在100次成功连接(登录)后收到错误。?
我应该如何恢复这个问题?
任何建议都会有所帮助。
答案 0 :(得分:0)
我从您的帖子中了解到,您希望模拟同时登录聊天服务器的1000个用户。我相信您正在尝试测试聊天服务器上的负载。
但是,从您的代码中,我看到您每次都在循环中建立和关闭套接字连接。这类似于1000个用户在队列中等待并尝试一个接一个地登录到服务器。这不会模拟并发负载,而是对服务器进行1000次连续调用,并且不适合加载测试服务器。
我的评论是基于上述理解。如果不是这种情况,请加油。
关于你得到的例外情况,我不知道为什么它在100次尝试之后不应该起作用。您可能需要检查服务器端代码以找出问题。