网络连接断开后,客户端尝试直接使用connect()函数重连,无论重复多少次connect()函数都只会返回-1(无论服务器端本身是否已经可以被重新连接):
connect(client_socket, (sockaddr*)&server_addr, sizeof(server_addr));
经过摸索,重新连接前应当使用socket()函数重新设置socket(原因不明):
client_socket = socket(AF_INET, SOCK_STREAM, 0);
而客户端的服务器地址结构体则无需进行重新设置:
//no need to reset after disconnect
sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
inet_pton(AF_INET,SERVER_IP.c_str(), &server_addr.sin_addr);
server_addr.sin_port = htons(SERVER_PORT);