私は頭痛を引き起こす最も奇妙な問題を抱えています。次のコードを検討してください。
// Create and bind socket
std::map<Connection, bool> clients;
unsigned short port=6222;
struct sockaddr_in local_address, from_address;
int result;
char buffer[10000];
SOCKET receive_socket;
local_address.sin_family = AF_INET;
local_address.sin_addr.s_addr = INADDR_ANY;
local_address.sin_port = htons(port);
receive_socket = socket(AF_INET,SOCK_DGRAM,0);
何が起こっているのかは、receive_socketがバインドされていないことです。SOCKET_ERRORが発生します。プログラムをデバッグしてreceive_socketを確認すると、文字化けしているように見えます。'std::map'行にブレークポイントを設定しました。上記のコードの各行にステップインすると、ステップイン(F11)を使用していても、デバッグカーソルが「unsignedshortport」行から最初の「local_address.sin」行に直接ジャンプします。 struct、int、char、またはSOCKETの行は、それらをまっすぐ飛び越えます。
この時点で、local_address、from_address、result、buffer、およびreceive_socketにマウスを合わせます。それらはすべて文字化けしたがらくたでいっぱいです。これは、これらの変数をまだ定義していないためですか?上記のコードの最後に到達すると、local_address.sin_portが19992に設定されていることにも気づきましたが、6222である必要がありますか?
編集:ifステートメントが真であるために失敗している私のバインディングコードは次のとおりです:
if(bind( receive_socket, (SOCKADDR*) &local_address, sizeof(local_address)) == SOCKET_ERROR)
{
closesocket(receive_socket);
return 1;
}