?? infrared.cpp
字號:
#include <windows.h>
#include <af_irda.h>
#include <windowsx.h>
#include <winsock.h>
#include <aygshell.h>
#include "Infrared.h"
#include "ErrorReporting.h"
#include "File.h"
#pragma comment(lib, "Ws2.lib")
#define NUMRETRY 5 // Maximum number of retries
ErrorReport term1;
bool SocketServer(LPTSTR _filename){
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2,2);
err = WSAStartup(wVersionRequested,&wsaData);
if(err !=0){
MessageBox(NULL,L"not find a usable WinSock DLL.", L"wVersionRequested:",MB_OK);
return false;
}
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){
WSACleanup();
return false;
}
SOCKET ServerSock,
ClientSock;
SOCKADDR_IRDA address = {AF_IRDA,0,0,0,0,"IRServer"};
int index = 0,
iReturn;
CHAR szServerA[100];
TCHAR szServerW[100];
if((ServerSock = socket(AF_IRDA,SOCK_STREAM,0))==INVALID_SOCKET){
term1.Report();
return false;
}
if(bind(ServerSock,(struct sockaddr *)&address, sizeof(address))==SOCKET_ERROR){
term1.Report();
return false;
}
if(listen(ServerSock,5)==SOCKET_ERROR){
term1.Report();
return false;
}
if((ClientSock = accept(ServerSock,0,0))==INVALID_SOCKET){
term1.Report();
return false;
}
// if(send(ClientSock,"To Client!",strlen("To Client!")+1,0)==SOCKET_ERROR){
// term1.Report();
// }
File filetoSend;
filetoSend.FileCreate(_filename);
filetoSend.FileRead();
if(send(ClientSock,(const char *)((PBYTE)filetoSend.BuffFileRead),
strlen((const char *)((PBYTE)filetoSend.BuffFileRead))+1,0)==SOCKET_ERROR){//"To Client!"
term1.Report();
}
iReturn = recv(ClientSock,szServerA,sizeof(szServerA),0);
if(iReturn = SOCKET_ERROR){
term1.Report();
return false;
}else if(iReturn == 0){
MessageBox(NULL, L"Finished receiving data from client!", L"Finished receiving",MB_OK);
}else{
for(index = 0;index<=sizeof(szServerA);index++)
szServerW[index] = szServerA[index];
MessageBox(NULL, szServerW, L"Data:",MB_OK);
}
closesocket(ServerSock);
closesocket(ClientSock);
return true;
}
bool SocketClient(){
SOCKET sock;
DEVICELIST devList;
SOCKADDR_IRDA address = {AF_IRDA,0,0,0,0,"IRServer"};
int iCount = 0,
index = 0,
iReturn,
iDevListLen = sizeof(devList);
char szClientA[100];
TCHAR szClientW[100];
if((sock = socket(AF_IRDA,SOCK_STREAM,0))==INVALID_SOCKET){
term1.Report();
return false;
}
devList.numDevice = 0;
while((devList.numDevice == 0)&&(iCount<=NUMRETRY)){
if(getsockopt(sock,SOL_IRLMP,IRLMP_ENUMDEVICES,
(char *)&devList,&iDevListLen)==SOCKET_ERROR){
term1.Report();
return FALSE;
}
iCount++;
Sleep(1000);
}
if(iCount>NUMRETRY){
MessageBox(NULL,L"Server could not be located!",L"Error:",MB_OK);
closesocket(sock);
return false;
}
if(connect(sock,(struct sockaddr *)&address,sizeof(SOCKADDR_IRDA))==SOCKET_ERROR){
term1.Report();
closesocket(sock);
return false;
}
if (send(sock,"Received.",strlen ("Received.")+1,0)== SOCKET_ERROR){
term1.Report();
return false;
}
iReturn = recv(sock,szClientA,sizeof(szClientA),0);
if(iReturn == SOCKET_ERROR){
term1.Report();
return false;
}else if(iReturn == 0){
MessageBox(NULL,TEXT("Finished receiving data!"),TEXT("Client"),MB_OK);
}else{//If no error occurs, recv returns the number of bytes received.
for(index = 0;index<=sizeof(szClientA);index++){
szClientW[index]=szClientA[index];
}
MessageBox(NULL,szClientW,TEXT("data from Server:"),MB_OK);
}
closesocket(sock);
return true;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -