package test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import protocol.ProtoHead;
import protocol.Msg.LoginMsg;
import protocol.Msg.LoginMsg.LoginRsp;
import server.NetworkPacket;
import tools.DataTypeTranslater;
public class ConnectionPoolTest {
Socket socket;
InputStream inputStream;
OutputStream outputStream;
private static String host = "127.0.0.1";
private static int port = 8081;
public static void main(String args[]){
//测试多用户同时在线的情况时 连接池是否正常
ConnectionPoolTest t = new ConnectionPoolTest();
t.login("11", "1");
// t.login("2", "1");
// t.login("3", "1");
// t.login("4", "1");
// t.login("5", "1");
// t.login("6", "1");
// t.login("7", "1");
// t.login("8", "1");
// t.login("9", "1");
// t.login("10", "1");
// t.login("11", "1");
}
private void login(String user,String password){
LoginMsg.LoginReq.Builder builder = LoginMsg.LoginReq.newBuilder();
builder.setUserId(user);
builder.setUserPassword(password);
try {
socket = new Socket(host, port);
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
byte[] byteArray = NetworkPacket.packMessage(ProtoHead.ENetworkMessage.LOGIN_REQ.getNumber(), builder.build().toByteArray());
writeToServer(byteArray);
while (true) {
byteArray = readFromServer();
ProtoHead.ENetworkMessage type = NetworkPacket.getMessageType(byteArray);
if(ProtoHead.ENetworkMessage.LOGIN_RSP == type){
LoginRsp loginRsp = LoginRsp.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray));
System.out.println(user+":登录结果:"+loginRsp.getResultCode().toString());
}
else{
System.out.println(type);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void writeToServer(byte[] arrayBytes) throws IOException {
// outputStream = socket.getOutputStream();
outputStream.write(arrayBytes);
// outputStream.close();
}
public byte[] readFromServer() throws IOException {
byte[] byteArray = new byte[200];
inputStream.read(byteArray);
byteArray = cutResult(byteArray);
return byteArray;
}
public byte[] cutResult(byte[] byteArray) {
int size = DataTypeTranslater.bytesToInt(byteArray, 0);
byte[] result = new byte[size];
for (int i = 0; i < size; i++)
result[i] = byteArray[i];
return result;
}
}