in unserer Studie von Netzwerk-Programmierung begannen wir mit IRDA-Programmierung, so habe ich zwei IrDA-Adapter "Kingsun KS-959 USB Infrarot-Adapter" und zwei alte Computer mit Windows XP SP2.Wie stelle ich eine Verbindung über irDA-Buchsen her?
Ich habe die Adapter auf beiden Maschinen korrekt installiert.
Ich wollte Server/Client in IrDA erstellen. hier ist ein Beispiel für irserver irClient:
// irServer:
#define BACKLOG 2
WORD wVersion = MAKEWORD(2, 2);
WSADATA wSaData;
if(WSAStartup(wVersion, &wSaData))
return -1;
int irSockServ = socket(AF_IRDA, SOCK_STREAM, 0);
if(SOCKET_ERROR == irSockServ)
DieWithError(WSAGetLastError());
SOCKADDR_IRDA sa_irda_serv = {AF_IRDA, 0, 0, 0, 0,
"irDA:irCOMM"};
if(SOCKET_ERROR == bind(irSockServ, (SOCKADDR*)&sa_irda_serv, sizeof(sa_irda_serv)))
DieWithError(WSAGetLastError());
if(SOCKET_ERROR == listen(irSockServ, BACKLOG))
DieWithError(WSAGetLastError());
SOCKADDR_IRDA sa_irda_clnt;
int sa_irda_clnt_len = sizeof(sa_irda_clnt);
int irSockClnt = accept(irSockServ, (SOCKADDR*)&sa_irda_clnt, &sa_irda_clnt_len);
if(SOCKET_ERROR == irSockClnt)
DieWithError(WSAGetLastError());
else
cout << "Client! Connected" << std::endl;
und hier ist eine Probe irClient:
WORD wVersion = MAKEWORD(2, 2);
WSADATA wSaData;
if(WSAStartup(wVersion, &wSaData))
return -1;
int irSockClnt = socket(AF_IRDA, SOCK_STREAM, 0);
if(SOCKET_ERROR == irSockClnt)
DieWithError(WSAGetLastError());
DEVICELIST DevLst;
int DevLstLen = sizeof(DEVICELIST);
while(1)
{
Sleep(1000);
DevLst.numDevice = 0;
// enumerating in range irDA devices
if(SOCKET_ERROR == getsockopt(irSockClnt, SOL_IRLMP,
IRLMP_ENUMDEVICES, (char*)&DevLst, &DevLstLen))
DieWithError(WSAGetLastError());
if(DevLst.numDevice)
{
cout << "Device Name: " << DevLst.Device[0].irdaDeviceName << endl;
SOCKADDR_IRDA sa_irda_serv;
sa_irda_serv.irdaAddressFamily = AF_IRDA;
strcpy(sa_irda_serv.irdaServiceName, "irDA:irCOMM");
memcpy(&sa_irda_serv.irdaDeviceID[0], &DevLst.Device[0].irdaDeviceID[0], 4);
// the problem is here it still stuck and won't connect!??
if(SOCKET_ERROR == connect(irSockClnt, (SOCKADDR*)&sa_irda_serv, sizeof(sa_irda_serv)))
DieWithError(WSAGetLastError());
}
}
ich alles funktioniert erhalten, bis eine Verbindung so connect
noch stecken Ausgabe und deshalb wird keine Verbindung hergestellt.
schätze ich jeden König von Hilfe
aber akzeptieren eine blockierende API. und selbst dann ist das Problem das gleiche. trotzdem danke für deine Hilfe. – Lee5
gibt es einen anderen Vorschlag? – Lee5
Können Sie Infra Red-Verbindungen testen, die über OS funktionieren? Wenn zwei Systeme angeschlossen sind, können Sie auch testen, ob Sie Dateien über die IR-Verbindung übertragen können? –