Bonjour
Je débute en OCaml et j'aimerais pouvoir me servir des sockets, ces petites bêtes qui se parlent par le biais d'internet.
N'ayant qu'un seul ordinateur, je commence pour l'instant par essayer de se faire parler deux sockets venant de deux fenêtres OCaml différentes. Je m'explique :
J'ouvre deux fois OCaml, dans l'un je met le code
que j'exécute, il se met donc en attente d'un autre socket se connectant à lui, puis dans l'autre fenêtre Caml je met le code
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 (* En lecture : *) #load "unix.cma";; let my_name = Unix.gethostname() ;; let my_entrie_byname = Unix.gethostbyname my_name ;; let my_addr = my_entrie_byname.Unix.h_addr_list.(0) ;; let sock_lec = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 ;; Unix.bind sock_lec (Unix.ADDR_INET(my_addr, 12345)) ;; Unix.listen sock_lec 1;; let (sock_serv, sock_addr) = Unix.accept sock_lec;; print_endline "Connecté !";;
Quand j'exécute ce dernier, tout se passe bien, les deux fenêtres m'affichent alors "Connecté !" et attendent de nouvelles instructions.
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 (* En écriture : *) #load "unix.cma";; let my_name = Unix.gethostname() ;; let my_entrie_byname = Unix.gethostbyname my_name ;; let my_addr = my_entrie_byname.Unix.h_addr_list.(0) ;; let sock_ecr = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 ;; Unix.bind sock_ecr (Unix.ADDR_INET(my_addr, 12346)) ;; let addr_ecr = Unix.ADDR_INET (my_addr,12345);; Unix.connect sock_ecr addr_ecr;; print_endline "Connecté !";;
Maintenant je veux envoyer un message de sock_ecr vers sock_lec, donc en utilisant Unix.read et Unix.write, mais ils me demandent des Unix.file_descr, je met quoi?
J'ai essayé avec la commande Unix.pipe(), mais ça ne semble pas être la bonne, le message ne passe pas.
Merci d'avance pour votre aide
Fractal
Partager