次の問題があります。次の関数を使用して、改行が発生するまでバッファーから文字列を受け取ります。
string get_all_buf(int sock) {
int n = 1, total = 0, found = 0;
char c;
char temp[1024*1024];
string antw = "";
while (!found) {
n = recv(sock, &temp[total], sizeof(temp) - total - 1, 0);
if (n == -1) {
break;
}
total += n;
temp[total] = '\0';
found = (strchr(temp, '\n') != 0);
if (found == 0){
found = (strchr(temp, '\r\n') != 0);
}
}
antw = temp;
size_t foundIndex = antw.find("\r\n");
if (foundIndex != antw.npos)
antw.erase ( antw.find ("\r\n"), 2 );
foundIndex = antw.find("\n");
if (foundIndex != antw.npos)
antw.erase ( antw.find ("\n"), 2 );
return answ;
}
したがって、次のように使用します。
string an = get_all_buf(sClient);
exeファイルを作成すると、すべてが完全に機能します。しかし、dll を作成して rundll32 を使用して実行すると、アプリケーションは " string an = get_all_buf(sClient);
" で終了し、エラー メッセージは表示されません...
私はこれを何時間も修正しようとしましたが、現在は少し必死です...
PS 明らかなエラーや不適切なコーディング スタイルで申し訳ありません。C++ の学習を始めたばかりです。