1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| #include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <time.h>
#include <string.h>
#include <windows.h>
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;
} |
Partager