#include #include #include #include #include #include void wsa_start(); void connecter(SOCKADDR_IN *info_source, SOCKET socket); void envoyer(SOCKET socket); unsigned long WINAPI recevoir(void* socket); int main(int argc, char *argv[]) { wsa_start(); SOCKET socket_perso = socket(AF_INET, SOCK_STREAM, 0); printf("socket = %ld (!invalid socket = bon)\n", socket_perso); char ip[16]; printf("ip ?\n"); fgets(ip, 16, stdin); SOCKADDR_IN info_source; info_source.sin_family = AF_INET; info_source.sin_addr.s_addr = inet_addr(ip); info_source.sin_port = htons(80); connecter(&info_source, socket_perso); DWORD ThreadId; HANDLE h1; h1 = CreateThread(NULL,0,recevoir, &socket_perso, 0, &ThreadId); envoyer(socket_perso); fermeture(socket_perso); system("pause"); TerminateThread(h1,0); system("pause"); return 0; } void wsa_start() { int erreur; WSADATA initialisation_win32; erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32); if(erreur != 0) {printf("wsa_startup echouée\n");} else {printf("wsa_startup : OK\n");} } void connecter(SOCKADDR_IN *info_source, SOCKET socket) { int erreur = connect(socket, (struct sockaddr*)info_source, sizeof(*info_source)); if(erreur != 0) {printf("connection echouée %d\n",WSAGetLastError()); //exit(0); } else {printf("connection : OK\n");} } void envoyer(SOCKET socket) { int erreur; char message [1500]; fgets(message, 1500, stdin); erreur = send(socket, message, strlen(message), 0); if(erreur == 0) {printf("envoie echoué\n");} else {printf("envoie OK\n");} } int fermeture(SOCKET socket_perso) { int err_cleanup, erreur_s, erreur_c, erreur; erreur_s = shutdown(socket_perso, 2); erreur_c = closesocket(socket_perso); err_cleanup=WSACleanup(); if(erreur_s == 0 && erreur_c == 0 && err_cleanup == 0) {erreur = 0; return erreur;} else {erreur = 1; return erreur;} } unsigned long WINAPI recevoir(void* socket) { SOCKET* sock = socket; char buffer[1024], ancien_buffer[1024]; FILE* conv =fopen("conv.txt","w"); while(strstr(buffer,"esc") ==0) { recv(*sock, buffer, sizeof(buffer), 0); if(strcmp(buffer, ancien_buffer)== 0) {fprintf(conv, buffer); strcpy(ancien_buffer,buffer);} printf("salut \n");//pour voir si çamarche sleep(500); } fclose(conv); return 0; }