私のnode.js UDPサーバーのコードは
var PORT = 515;
var HOST = '127.0.0.1';
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('listening', function () {
var address = server.address();
console.log('UDP Server listening on ' + address.address + ":" + address.port);
});
server.on('message', function (message, remote) {
console.log(remote.address + ':' + remote.port +' - ' + message);
});
server.bind(PORT, HOST);
私のC++クライアントのコードは次のとおりです。
WORD wVersionRequested = MAKEWORD(1, 1);
WSADATA wsaData;
int err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
return FALSE;
}
if ( LOBYTE( wsaData.wVersion) != 1 ||
HIBYTE( wsaData.wVersion) != 1 )
{
WSACleanup();
return FALSE;
}
// get the server address
srvAddress.sin_addr.S_un.S_addr = inet_addr(GetProfileUdpHost());
srvAddress.sin_family = AF_INET;
srvAddress.sin_port = htons(GetProfileUdpPort());
int UdpSend(CString& content, SOCKADDR* address)
{
SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);
int result = sendto(sockClient,
content,
content.GetLength()+1,
0,
address, sizeof(SOCKADDR));
closesocket(sockClient);
return result;
}
ユーザーが「中文」などの文字を送信すると、nodejs UDP サーバーは「 」を受信します。認識できないコードが取得されます。私のnodejsコードのエンコーディングはUTF-8で、ANSIに変更しても同じ問題です。