1

プログラムでソケットを使用しています。を追加したためWSAStartup。私のアプリケーションは正常に動作します(停止のシグナルを受け取るまでは常に稼働しています)。WSACleanupシグナルを受け取った後、プログラムの最後に関数を書くとクラッシュし、削除すると正常に終了するという問題が止まります。

ありがとう

4

2 に答える 2

3

これは私のプロジェクトの1つからの抜粋です。

初期化:

#if defined(WIN32)
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &wsaData) != 0) {
  LOG("WSAStartup() error");
  return false;
}
#endif

serv_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

...

掃除:

#if defined(WIN32)
  /* winsock requires a special function for sockets */
  shutdown(serv_socket, SD_BOTH);
  closesocket(serv_socket);
  /* clean up winsock */
  WSACleanup();  
#else
  close(serv_socket);
#endif

お役に立てれば。

于 2009-10-01T15:06:17.883 に答える
2

解決できず、問題を見つけることができませんでした。アプリケーションは単なるソケット以上のものを使用しています。Microsoftのリファレンスによると、WSAStartupはWSACleanupを使用する必要があるとのことですが、これは真実ではなく、システムはそれに関してリリースしています。

于 2009-10-05T22:09:32.600 に答える