現在、DLL を挿入していくつかの機能を迂回することで、基本的なサーバー アプリケーションにいくつかの機能を追加しようとしていますが、2 つの呼び出しの間に保存された IP アドレスが破損するという問題があります。
まず、「受け入れ」を迂回していくつかの値を解析し、それらを接続クラスに入力してリストに追加します。
迂回機能を受け入れる:
std::list<Connection*> ConnectionsList;
SOCKET WINAPI MyAccept(SOCKET s, sockaddr *addr, int *addrlen)
{
...
ConnectionsList.push_back(new Connection(ClientSocket, ipstr));
...
}
接続クラス:
SOCKET s;
char * ipAddress;
char * playerName;
Connection::Connection(SOCKET sock, char * address)
{
s = sock;
ipAddress = address;
}
また、接続のリストからソケットを削除したい「closesocket」を迂回しました。この関数にブレークポイントを設定すると、IP アドレスが壊れているように見えます。
なぜこれが起こっているのか誰にも分かりますか?