Bonjour,

je me debrouille déja un peu en socket C et avec les Api j'essai de me faire un bot irc, le programme marche bien en mode console mais avec l'api tout bug quand on clic sur le bouton connection, tout plante, voici le code (le prog n'est pas inséré c'est juste un test)

dans ma boite de dialogue je met en ip 213.246.55.23 et port 21 deja pour tester (les autres fonctions ne marche pas, pour le moment le prog ne fais qu'un recv() pour voir si le socket s'ouvre)

mais au lieu de sa le prog plante et ne repond plus


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>

#include "resource.h"

#pragma comment&#40;lib, "ws2_32.lib"&#41;

INT_PTR CALLBACK DlgProc&#40;HWND, UINT, WPARAM, LPARAM&#41;;
HINSTANCE hinst;
SOCKET sock;

char ip&#91;16&#93;;
char channel&#91;300&#93;;
char nick&#91;512&#93;;
char buffer&#91;5000&#93;;
int port;

int WINAPI WinMain&#40;HINSTANCE Instance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow&#41;
&#123;
hinst = Instance;
  DialogBox&#40;hinst,&#40;LPCTSTR&#41;IDD_DIALOG1, 0, DlgProc&#41;;
&#125;

/******************************************************************************/
INT_PTR CALLBACK DlgProc&#40;HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam&#41;
&#123;
  switch &#40;uMsg&#41;
  &#123;
    case WM_COMMAND&#58;
switch&#40;wParam&#41;
&#123;
//Connection
case ID_CONNECT&#58;
GetDlgItemText&#40;hwnd,IDC_EDIT1,ip,sizeof&#40;ip&#41;&#41;;
GetDlgItemText&#40;hwnd,IDC_EDIT4,channel,sizeof&#40;channel&#41;&#41;;
GetDlgItemText&#40;hwnd,IDC_EDIT5,nick,sizeof&#40;nick&#41;&#41;;
port = GetDlgItemInt&#40;hwnd,IDC_EDIT3,NULL,NULL&#41;;

WSADATA WSAData;
WSAStartup&#40;MAKEWORD&#40;2,0&#41;, &WSAData&#41;;
SOCKADDR_IN sin;

sock = socket&#40;AF_INET, SOCK_STREAM, 0&#41;;
sin.sin_addr.s_addr			= inet_addr&#40;ip&#41;;
sin.sin_family				= AF_INET;
sin.sin_port				= htons&#40;port&#41;;
connect&#40;sock, &#40;SOCKADDR *&#41;&sin, sizeof&#40;sin&#41;&#41;;

while&#40;1&#41;
&#123;
recv&#40;sock,buffer,sizeof&#40;buffer&#41;,0&#41;;
SetDlgItemText&#40;hwnd,IDC_EDIT1,buffer&#41;;
&#125;
	break;

//Envoyer message
case ID_ENVOYER&#58;




	break;

case ID_DECONNECT&#58;
EnableWindow&#40;GetDlgItem&#40;hwnd, ID_CONNECT&#41;, TRUE&#41;;
EnableWindow&#40;GetDlgItem&#40;hwnd, ID_DECONNECT&#41;, FALSE&#41;;
closesocket&#40;sock&#41;;
WSACleanup&#40;&#41;;
	break;


&#125;
  break;
	case WM_CLOSE&#58;
EndDialog&#40;hwnd,1&#41;;
closesocket&#40;sock&#41;;
WSACleanup&#40;&#41;;
	break;
  &#125;
return 0;
&#125;