我目前正在研究一個UDP應用程序,允許兩個用戶使用winsock librarary與海誓山盟對話。目前,當我的程序運行時,它首先將sockaddress保存到一個向量中,然後當用戶發送消息時,它會將該地址與向量中的第一個地址進行比較。當我調試和比較值進行比較,他們是完全一樣的但我如果statment轉到其他(它認爲該地址不等於對方)問題與比較套接字地址
這是我的代碼有:
#include <WinSock2.h>
sockaddr clientAddress;
recvfrom(hSocket, msg, MAXLINE, 0, &clientAddress, &cbClientAddress);
myVector.pushback(clientAddress);
if (&clientAddresses[0] == &clientAddress)
{
//is the same address
}
else
{
//not the same address
}
香港專業教育學院還試圖更加具體使用.sa_data
的clientAddress[0]
和&clientAddress.
感謝後
我懷疑周圍cbClientAddress'的'初始化(這應該是類型'socklen_t'和比較錯誤的長度問題,您應該調用之前initializating這個變量爲'的sizeof(clientAddress)''來recvfrom',然後比較結構中實際使用的字節數,而不是比較整個結構。你能告訴我如何初始化'cbClientAddress'? – Celada 2012-04-10 00:05:10
@Celada我在添加變量之前初始化變量sizeof(clientAddress)我只是使用clientAddress作爲連接的唯一標識符 – user1219627 2012-04-10 00:11:02
順便說一句,我強烈建議不要這樣做,除非你別無選擇。你應該只使用源地址作爲回覆的地址,用於記錄/授權目的除非你別無選擇,否則決不能用它來識別客戶。 – 2012-04-10 00:12:35