Bonjour à tous,
J'ai un programme client Windev qui communique avec un serveur de socket Delphi.
Schéma standard, mon client demande la connexion au serveur si ça fonctionne il écrit dans la socket et là ma fonction Réception prend le relai et attends pendant 10 s. la réponse. Si au bout de 10s. la variable qui lit la socket est vide alors j'ai un message "Erreur en réception". Seulement j'ai régulièrement des "erreurs en réception" et je n'arrive pas à trouver la solution ni à la reproduire systématiquement. Et là bim j'ai pu logger côté Delphi l'erreur :
"Disconnecting Socket Error n°10053 : Software caused connection abort." sachant que cette erreur c'est moi qui la gère dans la procédure :
ServerSocketClientError :
J'ai fouillé un peu sur le net mais ça ne m'a pas trop aidé...est ce que cette erreur vous parle ?
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 procedure TMainForm.ServerSocketClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); var ErrorMsg : String; begin // Définition du message d'erreur en fonction du code d'erreur Case ErrorCode Of 10013 : ErrorMsg := 'Permission Refusée.'; 10014 : ErrorMsg := 'Mauvaise adresse.'; 10022 : ErrorMsg := 'Arguments Invalides.'; 10024 : ErrorMsg := 'Trop de fichiers ouverts.'; 10035 : ErrorMsg := 'Resource temporarily unavailable.'; 10036 : ErrorMsg := 'Operation en cours.'; 10037 : ErrorMsg := 'Operation déjà en cours.'; 10038 : ErrorMsg := 'Socket operation On non-socket.'; 10039 : ErrorMsg := 'Destination address required.'; 10040 : ErrorMsg := 'Message trop long.'; 10041 : ErrorMsg := 'Protocol wrong Type For socket.'; 10042 : ErrorMsg := 'Bad protocol option.'; 10043 : ErrorMsg := 'Protocol Not supported.'; 10044 : ErrorMsg := 'Socket Type Not supported.'; 10045 : ErrorMsg := 'Operation Not supported.'; 10046 : ErrorMsg := 'Protocol family Not supported.'; 10047 : ErrorMsg := 'Address family Not supported by protocol family.'; 10048 : ErrorMsg := 'Address already In use.'; 10049 : ErrorMsg := 'Cannot assign requested address.'; 10050 : ErrorMsg := 'Network Is down.'; 10051 : ErrorMsg := 'Network Is unreachable.'; 10052 : ErrorMsg := 'Network dropped connection On reset.'; 10053 : ErrorMsg := 'Software caused connection abort.'; 10054 : ErrorMsg := 'Connection reset by peer.'; 10055 : ErrorMsg := 'No buffer space available.'; 10056 : ErrorMsg := 'Socket Is already connected.'; 10057 : ErrorMsg := 'Socket Is Not connected.'; 10058 : ErrorMsg := 'Cannot send after socket shutdown.'; 10060 : ErrorMsg := 'Connection timed Out.'; 10061 : ErrorMsg := 'Connection refused.'; 10064 : ErrorMsg := 'Host Is down.'; 10065 : ErrorMsg := 'No route To host.'; 10067 : ErrorMsg := 'Too many processes.'; 10091 : ErrorMsg := 'Network subsystem Is unavailable.'; 10092 : ErrorMsg := 'WINSOCK.DLL version Out Of range.'; 10093 : ErrorMsg := 'Successful WSAStartup Not yet performed.'; 10094 : ErrorMsg := 'Graceful shutdown In progress.'; 11001 : ErrorMsg := 'Host Not found.'; 11002 : ErrorMsg := 'Non-authoritative host Not found.'; 11003 : ErrorMsg := 'This Is a non-recoverable error.'; 11004 : ErrorMsg := 'Valid name, no data Record Of requested Type.'; Else // erreur inconnue ErrorMsg := 'Unknown socket error.'; End; // mise en forme de la signification de l'erreur ErrorMsg := 'Socket Error n°' + IntToStr(ErrorCode) + ' : ' + ErrorMsg; // l'erreur est traitée ErrorCode := 0; // définition du type d'erreur Case ErrorEvent Of eeSend : ErrorMsg := 'Writing ' + ErrorMsg; eeReceive : ErrorMsg := 'Reading ' + ErrorMsg; eeConnect : ErrorMsg := 'Connecting ' + ErrorMsg; eeDisconnect : ErrorMsg := 'Disconnecting ' + ErrorMsg; eeAccept : ErrorMsg := 'Accepting ' + ErrorMsg; Else // erreur inconnue ErrorMsg := 'Unknown ' + ErrorMsg; End; LogErreur(ErrorMsg); end;
Merci d'avance
Partager