Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questioncase IDC_LISTEN: char tBuff[6]; int PORT; GetDlgItemText(hWndconfp,IDC_PORT,tBuff,5); PORT = atoi(tBuff); ServerListen(PORT);
if (!csSendFile("C:/WINDOWS/Temp/hello.txt")) {closesocket(m_socket);return FALSE;}
#include <winsock2.h> // Socket #pragma comment(lib,"WS2_32.lib") // Librairie Associé au Socket #define WM_SOCKET WM_USER+100 int ClientConnect(char *IP,int PORT); SOCKET m_socket; SOCKET AcceptSocket; sockaddr_in clientService; //BOOL csGet(); //BOOL csSend(); // ############################################################### // *********** // *********** Connection du client // *********** // ############################################################### BOOL ClientConnect(char *IP,int PORT) { // Initialize Winsock. WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != NO_ERROR) { WSACleanup(); return FALSE; } //Create a socket. m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); if (m_socket == INVALID_SOCKET) { WSACleanup(); return FALSE; } // Connect to a server. clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr(IP); clientService.sin_port = htons(PORT); if (connect(m_socket,(SOCKADDR*) &clientService,sizeof(clientService)) == SOCKET_ERROR) { WSACleanup(); return FALSE; } else { return TRUE; } //Initialisation de WSAAsyncSelect if(WSAAsyncSelect(m_socket, NULL, WM_SOCKET, FD_READ|FD_WRITE|FD_CONNECT) == SOCKET_ERROR) { WSACleanup(); return FALSE; } return TRUE; } // ############################################################### // *********** // *********** Envoi d'un char // *********** // ############################################################### BOOL csSend(char* szData, DWORD msgSize) { send(m_socket,szData,msgSize,0); return TRUE; } // ############################################################### // *********** // *********** Envoi d'un fichier // *********** // ############################################################### BOOL csSendFile(char* fileName) { FILE* fich; char *buffer; int TailleFichier1; DWORD dwFileSize=0; HANDLE hSrcFile = INVALID_HANDLE_VALUE; hSrcFile = CreateFile(fileName,GENERIC_READ,FILE_SHARE_READ,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hSrcFile == INVALID_HANDLE_VALUE) { CloseHandle(hSrcFile); return FALSE; } dwFileSize = GetFileSize(hSrcFile,NULL) + 1; CloseHandle(hSrcFile); if ((buffer=(char *)malloc(dwFileSize))==NULL) return FALSE; if ((fich=fopen(fileName,"rb"))==NULL) return FALSE; TailleFichier1=fread(buffer,1,10000,fich); if (send(m_socket,buffer,TailleFichier1,0)<0) return FALSE; fclose(fich); free(buffer); return TRUE; } // ############################################################### // *********** // *********** Réception d'un buffer // *********** // ############################################################### BOOL csGet(char* getData) { ZeroMemory(getData,10000); recv(m_socket,getData,10000,0); return true; } // ############################################################### // *********** // *********** Réception d'un fichier // *********** // ############################################################### BOOL csGetFile(char* fileName) { FILE* fich; char *buffer; // buffer memoire, va recevoir données du serveur int TailleFichier; // Taille Fichier if ((fich=fopen(fileName,"w"))==NULL) {return FALSE;} if ((buffer=(char *)malloc(10000))==NULL) {return FALSE;} if ((TailleFichier=recv(m_socket,buffer,10000,0))<0) {return FALSE;} fwrite(buffer,1,TailleFichier,fich); // Ecriture dans FICHIER fclose(fich); free(buffer); // Libère mémoire return TRUE; } // ############################################################### // *********** // *********** Attente d'un client // *********** // ############################################################### BOOL ServerListen(int PORT) { //Initialisation de WINSOCK WSADATA wsaData; //int optval = 0x200; int iResult = WSAStartup(MAKEWORD(2,2),&wsaData); if(iResult != NO_ERROR) { WSACleanup(); return FALSE; } //Creation du socket m_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(m_socket == INVALID_SOCKET) { WSACleanup(); return FALSE; } //Binding du socket sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.S_un.S_addr = INADDR_ANY; service.sin_port = htons(PORT); iResult = bind(m_socket,(SOCKADDR*) &service, sizeof(service)); if(iResult == SOCKET_ERROR) { closesocket(m_socket); return FALSE; } //Ecoute sur le socket if (listen(m_socket,0) == SOCKET_ERROR) // J'ai remplacé le 0 par un 1 // setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO, (char*)&optval, sizeof(optval)); // setsockopt(m_socket, SOL_SOCKET, SO_SNDTIMEO, (char*)&optval, sizeof(optval)); if(WSAAsyncSelect(m_socket, NULL, WM_SOCKET, FD_ACCEPT|FD_CLOSE|FD_READ|FD_WRITE) == SOCKET_ERROR) { WSACleanup(); return FALSE; } return TRUE; }
if (!csSendFile("file.txt")) {return FALSE;}
... case IDC_COMP: if(computeS(hWndconf)){ MessageBox(hWndconf,"GHIProof successfully executed","Verifier: Success",MB_OK); } else{ MessageBox(hWndconf,"GHIProof aborted: an error occurs","Verifier: Error",MB_OK); } closesocket(m_socket); return TRUE;