{"id":7711,"date":"2026-04-14T15:57:20","date_gmt":"2026-04-14T14:57:20","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=7711"},"modified":"2026-04-14T15:58:51","modified_gmt":"2026-04-14T14:58:51","slug":"socket-udp-en-c-ansi","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/","title":{"rendered":"Socket UDP en C ansi"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">client_udp.c<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;string.h>\n#include &lt;sys\/types.h>\n#include &lt;sys\/socket.h>\n#include &lt;netinet\/in.h>\n#include &lt;arpa\/inet.h>\n#include &lt;unistd.h>\n\n#define PORT 8888\n#define BUFFER_SIZE 1024\n\nint main(int argc, char *argv[]) {\n    int sockfd;\n    struct sockaddr_in server_addr;\n    char message[BUFFER_SIZE];\n    int bytes_sent;\n    \n    \/* V\u00e9rifier les arguments *\/\n    if (argc != 2) {\n        fprintf(stderr, \"Usage: %s &lt;server_ip>\\n\", argv[0]);\n        fprintf(stderr, \"Exemple: %s 127.0.0.1\\n\", argv[0]);\n        exit(EXIT_FAILURE);\n    }\n    \n    \/* Cr\u00e9er le socket UDP *\/\n    sockfd = socket(AF_INET, SOCK_DGRAM, 0);\n    if (sockfd &lt; 0) {\n        perror(\"Erreur de cr\u00e9ation du socket\");\n        exit(EXIT_FAILURE);\n    }\n    \n    \/* Configurer l'adresse du serveur *\/\n    memset(&amp;server_addr, 0, sizeof(server_addr));\n    server_addr.sin_family = AF_INET;\n    server_addr.sin_port = htons(PORT);\n    server_addr.sin_addr.s_addr = inet_addr(argv[1]);\n    \n    printf(\"Client UDP - Envoi sans accus\u00e9 de r\u00e9ception\\n\");\n    printf(\"Tapez vos messages (ou 'quit' pour quitter)\\n\\n\");\n    \n    while (1) {\n        \/* Saisir le message *\/\n        printf(\"Message: \");\n        fgets(message, BUFFER_SIZE, stdin);\n        message[strcspn(message, \"\\n\")] = 0;  \/* Supprimer le saut de ligne *\/\n        \n        \/* V\u00e9rifier si l'utilisateur veut quitter *\/\n        if (strcmp(message, \"quit\") == 0) {\n            printf(\"Au revoir!\\n\");\n            break;\n        }\n        \n        \/* Envoyer le message (sans attendre de r\u00e9ponse) *\/\n        bytes_sent = sendto(sockfd, message, strlen(message), 0,\n                           (struct sockaddr *)&amp;server_addr, sizeof(server_addr));\n        \n        if (bytes_sent &lt; 0) {\n            perror(\"Erreur d'envoi\");\n        } else {\n            printf(\"Message envoy\u00e9 (%d octets)\\n\", bytes_sent);\n        }\n        \n        \/* Pas de recvfrom() - pas d'accus\u00e9 de r\u00e9ception *\/\n    }\n    \n    close(sockfd);\n    return 0;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">serveur_udp.c<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;string.h>\n#include &lt;sys\/types.h>\n#include &lt;sys\/socket.h>\n#include &lt;netinet\/in.h>\n#include &lt;arpa\/inet.h>\n#include &lt;unistd.h>\n\n#define PORT 8888\n#define BUFFER_SIZE 1024\n\nint main() {\n    int sockfd;\n    struct sockaddr_in server_addr, client_addr;\n    char buffer[BUFFER_SIZE];\n    socklen_t addr_len = sizeof(client_addr);\n    int bytes_received;\n    \n    \/* Cr\u00e9er le socket UDP *\/\n    sockfd = socket(AF_INET, SOCK_DGRAM, 0);\n    if (sockfd &lt; 0) {\n        perror(\"Erreur de cr\u00e9ation du socket\");\n        exit(EXIT_FAILURE);\n    }\n    \n    \/* Configurer l'adresse du serveur *\/\n    memset(&amp;server_addr, 0, sizeof(server_addr));\n    server_addr.sin_family = AF_INET;\n    server_addr.sin_port = htons(PORT);\n    server_addr.sin_addr.s_addr = INADDR_ANY;\n    \n    \/* Attacher le socket au port *\/\n    if (bind(sockfd, (struct sockaddr *)&amp;server_addr, sizeof(server_addr)) &lt; 0) {\n        perror(\"Erreur de bind\");\n        close(sockfd);\n        exit(EXIT_FAILURE);\n    }\n    \n    printf(\"Serveur UDP en \u00e9coute sur le port %d...\\n\", PORT);\n    printf(\"En attente de messages (Ctrl+C pour quitter)\\n\\n\");\n    \n    while (1) {\n        \/* Recevoir un message (sans envoyer de confirmation) *\/\n        bytes_received = recvfrom(sockfd, buffer, BUFFER_SIZE - 1, 0,\n                                 (struct sockaddr *)&amp;client_addr, &amp;addr_len);\n        \n        if (bytes_received &lt; 0) {\n            perror(\"Erreur de r\u00e9ception\");\n            continue;\n        }\n        \n        buffer[bytes_received] = '\\0';\n        printf(\"[%s:%d] %s\\n\",\n               inet_ntoa(client_addr.sin_addr),\n               ntohs(client_addr.sin_port),\n               buffer);\n    }\n    \n    close(sockfd);\n    return 0;\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>client_udp.c serveur_udp.c<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"{\"document\":\"AAAigJ+1kBbZjd+2CwDAn7WQFjmZjd+2C8CftZAWANmN37YLT00CogHaAQEBCAEPSApKigEBAQgBD0gCBAIBBAIqgEzCTgJCLABQNgIAYiwBAQgBD0gCBAIBBAIqEgEBCAEPSAoo+AKyAwJ43AOSBALWBAcIlAEItAICcygAqAAoACEBhwAoAicBKBAnAAQAhwAoAicBKBAnAKgBKAaoAYQAqAEhAicAAQAnASgEJwAoAScARACEAIEAhADEAAcAIQAoACEAJwAhASgPJwCoASEAKAWoAUcAKAInASgQJwAEAIEABACEAqgAxAGhACHSMa4wc3RhdGV2ZXJzaW9uZG9jdW1lbnRzbHVnc3RhdGVzYXZlZEF0c3RhdGVzYXZlZEJ5Y2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NzZXJ2ZXVyX3VkcC5jY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NsYW5ndWFnZXRoZW1laGlnaGxpZ2h0bGluZW51bWJlcnNsaW5lb2Zmc2V0dGl0bGVncm91cAoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPnNlcnZldXJfdWRwLmM8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6ZW5saWdodGVyL2NvZGVibG9jayB7Imxhbmd1YWdlIjoiYyJ9IC0tPgo8cHJlIGNsYXNzPSJFbmxpZ2h0ZXJKU1JBVyIgZGF0YS1lbmxpZ2h0ZXItbGFuZ3VhZ2U9ImMiIGRhdGEtZW5saWdodGVyLXRoZW1lPSIiIGRhdGEtZW5saWdodGVyLWhpZ2hsaWdodD0iIiBkYXRhLWVubGlnaHRlci1saW5lbnVtYmVycz0iIiBkYXRhLWVubGlnaHRlci1saW5lb2Zmc2V0PSIiIGRhdGEtZW5saWdodGVyLXRpdGxlPSIiIGRhdGEtZW5saWdodGVyLWdyb3VwPSIiPiNpbmNsdWRlICZsdDtzdGRpby5oPgojaW5jbHVkZSAmbHQ7c3RkbGliLmg+CiNpbmNsdWRlICZsdDtzdHJpbmcuaD4KI2luY2x1ZGUgJmx0O3N5cy90eXBlcy5oPgojaW5jbHVkZSAmbHQ7c3lzL3NvY2tldC5oPgojaW5jbHVkZSAmbHQ7bmV0aW5ldC9pbi5oPgojaW5jbHVkZSAmbHQ7YXJwYS9pbmV0Lmg+CiNpbmNsdWRlICZsdDt1bmlzdGQuaD4KCiNkZWZpbmUgUE9SVCA4ODg4CiNkZWZpbmUgQlVGRkVSX1NJWkUgMTAyNAoKaW50IG1haW4oKSB7CiAgICBpbnQgc29ja2ZkOwogICAgc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcl9hZGRyLCBjbGllbnRfYWRkcjsKICAgIGNoYXIgYnVmZmVyW0JVRkZFUl9TSVpFXTsKICAgIHNvY2tsZW5fdCBhZGRyX2xlbiA9IHNpemVvZihjbGllbnRfYWRkcik7CiAgICBpbnQgYnl0ZXNfcmVjZWl2ZWQ7CiAgICAKICAgIC8qIENyw6llciBsZSBzb2NrZXQgVURQICovCiAgICBzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CiAgICBpZiAoc29ja2ZkICZsdDsgMCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGRlIGNyw6lhdGlvbiBkdSBzb2NrZXQiKTsKICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICB9CiAgICAKICAgIC8qIENvbmZpZ3VyZXIgbCdhZHJlc3NlIGR1IHNlcnZldXIgKi8KICAgIG1lbXNldCgmYW1wO3NlcnZlcl9hZGRyLCAwLCBzaXplb2Yoc2VydmVyX2FkZHIpKTsKICAgIHNlcnZlcl9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgc2VydmVyX2FkZHIuc2luX3BvcnQgPSBodG9ucyhQT1JUKTsKICAgIHNlcnZlcl9hZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgICAKICAgIC8qIEF0dGFjaGVyIGxlIHNvY2tldCBhdSBwb3J0ICovCiAgICBpZiAoYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYW1wO3NlcnZlcl9hZGRyLCBzaXplb2Yoc2VydmVyX2FkZHIpKSAmbHQ7IDApIHsKICAgICAgICBwZXJyb3IoIkVycmV1ciBkZSBiaW5kIik7CiAgICAgICAgY2xvc2Uoc29ja2ZkKTsKICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICB9CiAgICAKICAgIHByaW50ZigiU2VydmV1ciBVRFAgZW4gw6ljb3V0ZSBzdXIgbGUgcG9ydCAlZC4uLlxuIiwgUE9SVCk7CiAgICBwcmludGYoIkVuIGF0dGVudGUgZGUgbWVzc2FnZXMgKEN0cmwrQyBwb3VyIHF1aXR0ZXIpXG5cbiIpOwogICAgCiAgICB3aGlsZSAoMSkgewogICAgICAgIC8qIFJlY2V2b2lyIHVuIG1lc3NhZ2UgKHNhbnMgZW52b3llciBkZSBjb25maXJtYXRpb24pICovCiAgICAgICAgYnl0ZXNfcmVjZWl2ZWQgPSByZWN2ZnJvbShzb2NrZmQsIGJ1ZmZlciwgQlVGRkVSX1NJWkUgLSAxLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmFtcDtjbGllbnRfYWRkciwgJmFtcDthZGRyX2xlbik7CiAgICAgICAgCiAgICAgICAgaWYgKGJ5dGVzX3JlY2VpdmVkICZsdDsgMCkgewogICAgICAgICAgICBwZXJyb3IoIkVycmV1ciBkZSByw6ljZXB0aW9uIik7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBidWZmZXJbYnl0ZXNfcmVjZWl2ZWRdID0gJ1wwJzsKICAgICAgICBwcmludGYoIlslczolZF0gJXNcbiIsCiAgICAgICAgICAgICAgIGluZXRfbnRvYShjbGllbnRfYWRkci5zaW5fYWRkciksCiAgICAgICAgICAgICAgIG50b2hzKGNsaWVudF9hZGRyLnNpbl9wb3J0KSwKICAgICAgICAgICAgICAgYnVmZmVyKTsKICAgIH0KICAgIAogICAgY2xvc2Uoc29ja2ZkKTsKICAgIHJldHVybiAwOwp9PC9wcmU+CjwhLS0gL3dwOmVubGlnaHRlci9jb2RlYmxvY2sgLS0+c3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlZG9jdW1lbnRjb250ZW50ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRtZXRhX3VhZ19jdXN0b21fcGFnZV9sZXZlbF9jc3Nmb290bm90ZXNkb2N1bWVudGJsb2Nrc1NvY2tldCBVRFAgZW4gQyBuc2lhY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NsYW5ndWFnZXRoZW1laGlnaGxpZ2h0bGluZW51bWJlcnNsaW5lb2Zmc2V0dGl0bGVncm91cGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2w8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Y2xlPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmVubGlnaHRlci9jb2RlYmxvY2sgeyJsYW5ndWFnZSI6ImMifSAtLT4KPHByZSBjbGFzcz0iRW5saWdodGVySlNSQVciIGRhdGEtZW5saWdodGVyLWxhbmd1YWdlPSJjIiBkYXRhLWVubGlnaHRlci10aGVtZT0iIiBkYXRhLWVubGlnaHRlci1oaWdobGlnaHQ9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW51bWJlcnM9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW9mZnNldD0iIiBkYXRhLWVubGlnaHRlci10aXRsZT0iIiBkYXRhLWVubGlnaHRlci1ncm91cD0iIj4jaW5jbHVkZSAmbHQ7c3RkaW8uaD4KI2luY2x1ZGUgJmx0O3N0ZGxpYi5oPgojaW5jbHVkZSAmbHQ7c3RyaW5nLmg+CiNpbmNsdWRlICZsdDtzeXMvdHlwZXMuaD4KI2luY2x1ZGUgJmx0O3N5cy9zb2NrZXQuaD4KI2luY2x1ZGUgJmx0O25ldGluZXQvaW4uaD4KI2luY2x1ZGUgJmx0O2FycGEvaW5ldC5oPgojaW5jbHVkZSAmbHQ7dW5pc3RkLmg+CgojZGVmaW5lIFBPUlQgODg4OAojZGVmaW5lIEJVRkZFUl9TSVpFIDEwMjQKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgIGludCBzb2NrZmQ7CiAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc2VydmVyX2FkZHI7CiAgICBjaGFyIG1lc3NhZ2VbQlVGRkVSX1NJWkVdOwogICAgaW50IGJ5dGVzX3NlbnQ7CiAgICAKICAgIC8qIFbDqXJpZmllciBsZXMgYXJndW1lbnRzICovCiAgICBpZiAoYXJnYyAhPSAyKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgJmx0O3NlcnZlcl9pcD5cbiIsIGFyZ3ZbMF0pOwogICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXhlbXBsZTogJXMgMTI3LjAuMC4xXG4iLCBhcmd2WzBdKTsKICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICB9CiAgICAKICAgIC8qIENyw6llciBsZSBzb2NrZXQgVURQICovCiAgICBzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CiAgICBpZiAoc29ja2ZkICZsdDsgMCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGRlIGNyw6lhdGlvbiBkdSBzb2NrZXQiKTsKICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICB9CiAgICAKICAgIC8qIENvbmZpZ3VyZXIgbCdhZHJlc3NlIGR1IHNlcnZldXIgKi8KICAgIG1lbXNldCgmYW1wO3NlcnZlcl9hZGRyLCAwLCBzaXplb2Yoc2VydmVyX2FkZHIpKTsKICAgIHNlcnZlcl9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgc2VydmVyX2FkZHIuc2luX3BvcnQgPSBodG9ucyhQT1JUKTsKICAgIHNlcnZlcl9hZGRyLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsKICAgIAogICAgcHJpbnRmKCJDbGllbnQgVURQIC0gRW52b2kgc2FucyBhY2N1c8OpIGRlIHLDqWNlcHRpb25cbiIpOwogICAgcHJpbnRmKCJUYXBleiB2b3MgbWVzc2FnZXMgKG91ICdxdWl0JyBwb3VyIHF1aXR0ZXIpXG5cbiIpOwogICAgCiAgICB3aGlsZSAoMSkgewogICAgICAgIC8qIFNhaXNpciBsZSBtZXNzYWdlICovCiAgICAgICAgcHJpbnRmKCJNZXNzYWdlOiAiKTsKICAgICAgICBmZ2V0cyhtZXNzYWdlLCBCVUZGRVJfU0laRSwgc3RkaW4pOwogICAgICAgIG1lc3NhZ2Vbc3RyY3NwbihtZXNzYWdlLCAiXG4iKV0gPSAwOyAgLyogU3VwcHJpbWVyIGxlIHNhdXQgZGUgbGlnbmUgKi8KICAgICAgICAKICAgICAgICAvKiBWw6lyaWZpZXIgc2kgbCd1dGlsaXNhdGV1ciB2ZXV0IHF1aXR0ZXIgKi8KICAgICAgICBpZiAoc3RyY21wKG1lc3NhZ2UsICJxdWl0IikgPT0gMCkgewogICAgICAgICAgICBwcmludGYoIkF1IHJldm9pciFcbiIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRW52b3llciBsZSBtZXNzYWdlIChzYW5zIGF0dGVuZHJlIGRlIHLDqXBvbnNlKSAqLwogICAgICAgIGJ5dGVzX3NlbnQgPSBzZW5kdG8oc29ja2ZkLCBtZXNzYWdlLCBzdHJsZW4obWVzc2FnZSksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmYW1wO3NlcnZlcl9hZGRyLCBzaXplb2Yoc2VydmVyX2FkZHIpKTsKICAgICAgICAKICAgICAgICBpZiAoYnl0ZXNfc2VudCAmbHQ7IDApIHsKICAgICAgICAgICAgcGVycm9yKCJFcnJldXIgZCdlbnZvaSIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHByaW50ZigiTWVzc2FnZSBlbnZvecOpICglZCBvY3RldHMpXG4iLCBieXRlc19zZW50KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUGFzIGRlIHJlY3Zmcm9tKCkgLSBwYXMgZCdhY2N1c8OpIGRlIHLDqWNlcHRpb24gKi8KICAgIH0KICAgIAogICAgY2xvc2Uoc29ja2ZkKTsKICAgIHJldHVybiAwOwp9PC9wcmU+CjwhLS0gL3dwOmVubGlnaHRlci9jb2RlYmxvY2sgLS0+aWVudF91ZHAuY2ludF91ZHAuY2RvY3VtZW50c2x1Z3N0YXRlc2F2ZWRBdHN0YXRlc2F2ZWRCeQUHCAQFBwUHCAcECkcADkoACwwGF1AAEVIACxETDwsNCAcECkcADkoACwwGF1AAEVIACxETDwsIBQkLCkUAsSEFBwgECAYIBQgHCAcIBggOCA4IC0gBBBoJCAYBDwMBCAcECkcADkoACwwGF1AAEVIACxETDwsIBQkLCkUACAcECkcADkoACwwGF1AAEVIACxETDwsCGwG4JAoBSAAEBQcFBxEBAwA1AQMAAAEHAAEBAAA3ARNBAAIAQQACAEIBAQBBAABBAAIACEE7DkE6AkEDAkQAfQF3EzIwMjYtMDQtMTRUMTU6NTc6MjB3FHNvY2tldC11ZHAtZW4tYy1hbnNpdyRiOTUxNjgxYy1jM2E2LTRkMzQtYTc2NC1lYWUwZGViMGJhYjB4dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNDRmNjlmMmEtMzNhMi00ZTQwLTg2MzAtODU5MWEyNTYwODUzeHcOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDQ3MDNjZDc5LWRiOTMtNDlkMy1iNTgzLTQwNzRlZWI4YjU5MXcTZW5saWdodGVyL2NvZGVibG9ja3cHZ2VuZXJpY3cAdwB3AHcAdwB3AHfQDSNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCiNkZWZpbmUgUE9SVCA4ODg4CiNkZWZpbmUgQlVGRkVSX1NJWkUgMTAyNAoKaW50IG1haW4oKSB7CiAgICBpbnQgc29ja2ZkOwogICAgc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcl9hZGRyLCBjbGllbnRfYWRkcjsKICAgIGNoYXIgYnVmZmVyW0JVRkZFUl9TSVpFXTsKICAgIHNvY2tsZW5fdCBhZGRyX2xlbiA9IHNpemVvZihjbGllbnRfYWRkcik7CiAgICBpbnQgYnl0ZXNfcmVjZWl2ZWQ7CiAgICAKICAgIC8qIENyw6llciBsZSBzb2NrZXQgVURQICovCiAgICBzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CiAgICBpZiAoc29ja2ZkIDwgMCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGRlIGNyw6lhdGlvbiBkdSBzb2NrZXQiKTsKICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICB9CiAgICAKICAgIC8qIENvbmZpZ3VyZXIgbCdhZHJlc3NlIGR1IHNlcnZldXIgKi8KICAgIG1lbXNldCgmc2VydmVyX2FkZHIsIDAsIHNpemVvZihzZXJ2ZXJfYWRkcikpOwogICAgc2VydmVyX2FkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICBzZXJ2ZXJfYWRkci5zaW5fcG9ydCA9IGh0b25zKFBPUlQpOwogICAgc2VydmVyX2FkZHIuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKICAgIAogICAgLyogQXR0YWNoZXIgbGUgc29ja2V0IGF1IHBvcnQgKi8KICAgIGlmIChiaW5kKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzZXJ2ZXJfYWRkciwgc2l6ZW9mKHNlcnZlcl9hZGRyKSkgPCAwKSB7CiAgICAgICAgcGVycm9yKCJFcnJldXIgZGUgYmluZCIpOwogICAgICAgIGNsb3NlKHNvY2tmZCk7CiAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgfQogICAgCiAgICBwcmludGYoIlNlcnZldXIgVURQIGVuIMOpY291dGUgc3VyIGxlIHBvcnQgJWQuLi5cbiIsIFBPUlQpOwogICAgcHJpbnRmKCJFbiBhdHRlbnRlIGRlIG1lc3NhZ2VzIChDdHJsK0MgcG91ciBxdWl0dGVyKVxuXG4iKTsKICAgIAogICAgd2hpbGUgKDEpIHsKICAgICAgICAvKiBSZWNldm9pciB1biBtZXNzYWdlIChzYW5zIGVudm95ZXIgZGUgY29uZmlybWF0aW9uKSAqLwogICAgICAgIGJ5dGVzX3JlY2VpdmVkID0gcmVjdmZyb20oc29ja2ZkLCBidWZmZXIsIEJVRkZFUl9TSVpFIC0gMSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGllbnRfYWRkciwgJmFkZHJfbGVuKTsKICAgICAgICAKICAgICAgICBpZiAoYnl0ZXNfcmVjZWl2ZWQgPCAwKSB7CiAgICAgICAgICAgIHBlcnJvcigiRXJyZXVyIGRlIHLDqWNlcHRpb24iKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGJ1ZmZlcltieXRlc19yZWNlaXZlZF0gPSAnXDAnOwogICAgICAgIHByaW50ZigiWyVzOiVkXSAlc1xuIiwKICAgICAgICAgICAgICAgaW5ldF9udG9hKGNsaWVudF9hZGRyLnNpbl9hZGRyKSwKICAgICAgICAgICAgICAgbnRvaHMoY2xpZW50X2FkZHIuc2luX3BvcnQpLAogICAgICAgICAgICAgICBidWZmZXIpOwogICAgfQogICAgCiAgICBjbG9zZShzb2NrZmQpOwogICAgcmV0dXJuIDA7Cn13AWN7QnnYyAY9MAB7QeYg1PgAAABdAH0BfQB3BmNsb3NlZHcGY2xvc2VkdwB3AHcAeHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRjZTU1NzkzNi03ZjZjLTQyODgtOTQ3Yy02MDUyNmUwYTJkNWJ3E2VubGlnaHRlci9jb2RlYmxvY2t3AHcAdwB3AHcAdwB3zQ8jaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KI2luY2x1ZGUgPGFycGEvaW5ldC5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgojZGVmaW5lIFBPUlQgODg4OAojZGVmaW5lIEJVRkZFUl9TSVpFIDEwMjQKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgIGludCBzb2NrZmQ7CiAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc2VydmVyX2FkZHI7CiAgICBjaGFyIG1lc3NhZ2VbQlVGRkVSX1NJWkVdOwogICAgaW50IGJ5dGVzX3NlbnQ7CiAgICAKICAgIC8qIFbDqXJpZmllciBsZXMgYXJndW1lbnRzICovCiAgICBpZiAoYXJnYyAhPSAyKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgPHNlcnZlcl9pcD5cbiIsIGFyZ3ZbMF0pOwogICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXhlbXBsZTogJXMgMTI3LjAuMC4xXG4iLCBhcmd2WzBdKTsKICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICB9CiAgICAKICAgIC8qIENyw6llciBsZSBzb2NrZXQgVURQICovCiAgICBzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CiAgICBpZiAoc29ja2ZkIDwgMCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGRlIGNyw6lhdGlvbiBkdSBzb2NrZXQiKTsKICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICB9CiAgICAKICAgIC8qIENvbmZpZ3VyZXIgbCdhZHJlc3NlIGR1IHNlcnZldXIgKi8KICAgIG1lbXNldCgmc2VydmVyX2FkZHIsIDAsIHNpemVvZihzZXJ2ZXJfYWRkcikpOwogICAgc2VydmVyX2FkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICBzZXJ2ZXJfYWRkci5zaW5fcG9ydCA9IGh0b25zKFBPUlQpOwogICAgc2VydmVyX2FkZHIuc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKGFyZ3ZbMV0pOwogICAgCiAgICBwcmludGYoIkNsaWVudCBVRFAgLSBFbnZvaSBzYW5zIGFjY3Vzw6kgZGUgcsOpY2VwdGlvblxuIik7CiAgICBwcmludGYoIlRhcGV6IHZvcyBtZXNzYWdlcyAob3UgJ3F1aXQnIHBvdXIgcXVpdHRlcilcblxuIik7CiAgICAKICAgIHdoaWxlICgxKSB7CiAgICAgICAgLyogU2Fpc2lyIGxlIG1lc3NhZ2UgKi8KICAgICAgICBwcmludGYoIk1lc3NhZ2U6ICIpOwogICAgICAgIGZnZXRzKG1lc3NhZ2UsIEJVRkZFUl9TSVpFLCBzdGRpbik7CiAgICAgICAgbWVzc2FnZVtzdHJjc3BuKG1lc3NhZ2UsICJcbiIpXSA9IDA7ICAvKiBTdXBwcmltZXIgbGUgc2F1dCBkZSBsaWduZSAqLwogICAgICAgIAogICAgICAgIC8qIFbDqXJpZmllciBzaSBsJ3V0aWxpc2F0ZXVyIHZldXQgcXVpdHRlciAqLwogICAgICAgIGlmIChzdHJjbXAobWVzc2FnZSwgInF1aXQiKSA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiQXUgcmV2b2lyIVxuIik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBFbnZveWVyIGxlIG1lc3NhZ2UgKHNhbnMgYXR0ZW5kcmUgZGUgcsOpcG9uc2UpICovCiAgICAgICAgYnl0ZXNfc2VudCA9IHNlbmR0byhzb2NrZmQsIG1lc3NhZ2UsIHN0cmxlbihtZXNzYWdlKSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZzZXJ2ZXJfYWRkciwgc2l6ZW9mKHNlcnZlcl9hZGRyKSk7CiAgICAgICAgCiAgICAgICAgaWYgKGJ5dGVzX3NlbnQgPCAwKSB7CiAgICAgICAgICAgIHBlcnJvcigiRXJyZXVyIGQnZW52b2kiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwcmludGYoIk1lc3NhZ2UgZW52b3nDqSAoJWQgb2N0ZXRzKVxuIiwgYnl0ZXNfc2VudCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFBhcyBkZSByZWN2ZnJvbSgpIC0gcGFzIGQnYWNjdXPDqSBkZSByw6ljZXB0aW9uICovCiAgICB9CiAgICAKICAgIGNsb3NlKHNvY2tmZCk7CiAgICByZXR1cm4gMDsKfXcBY3ckNDlmM2M0ZTktYjFiMC00N2QyLThhNDAtYjJkODkwNTNjYWMweHcOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3B3B1Ymxpc2gCwM+aiAsFAwEmAAEAAQETANnGr9sFCQACAQ0bAAUAAQABARMAIgHoEgM=\",\"updateId\":701346128}","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-7711","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Socket UDP en C ansi - workboot<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Socket UDP en C ansi - workboot\" \/>\n<meta property=\"og:description\" content=\"client_udp.c serveur_udp.c\" \/>\n<meta property=\"og:url\" content=\"https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/\" \/>\n<meta property=\"og:site_name\" content=\"workboot\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-14T14:58:51+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/socket-udp-en-c-ansi\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/socket-udp-en-c-ansi\\\/\",\"name\":\"Socket UDP en C ansi - workboot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\"},\"datePublished\":\"2026-04-14T14:57:20+00:00\",\"dateModified\":\"2026-04-14T14:58:51+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/workboot.fr\\\/ciela\\\/socket-udp-en-c-ansi\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"name\":\"workboot\",\"description\":\"Open Source, Open Minds \",\"publisher\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\",\"name\":\"workboot\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"width\":1024,\"height\":950,\"caption\":\"workboot\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Socket UDP en C ansi - workboot","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/","og_locale":"fr_FR","og_type":"article","og_title":"Socket UDP en C ansi - workboot","og_description":"client_udp.c serveur_udp.c","og_url":"https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/","og_site_name":"workboot","article_modified_time":"2026-04-14T14:58:51+00:00","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/","url":"https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/","name":"Socket UDP en C ansi - workboot","isPartOf":{"@id":"https:\/\/workboot.fr\/ciela\/#website"},"datePublished":"2026-04-14T14:57:20+00:00","dateModified":"2026-04-14T14:58:51+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/workboot.fr\/ciela\/socket-udp-en-c-ansi\/"]}]},{"@type":"WebSite","@id":"https:\/\/workboot.fr\/ciela\/#website","url":"https:\/\/workboot.fr\/ciela\/","name":"workboot","description":"Open Source, Open Minds ","publisher":{"@id":"https:\/\/workboot.fr\/ciela\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/workboot.fr\/ciela\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/workboot.fr\/ciela\/#organization","name":"workboot","url":"https:\/\/workboot.fr\/ciela\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","width":1024,"height":950,"caption":"workboot"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"client_udp.c serveur_udp.c","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/7711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=7711"}],"version-history":[{"count":3,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/7711\/revisions"}],"predecessor-version":[{"id":7716,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/7711\/revisions\/7716"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=7711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}