Commits

Anonymous committed 5450019

echo_server still not working.

  • Participants
  • Parent commits a17abd7

Comments (0)

Files changed (2)

+-module(c).
+
+-compile(export_all).
+
+main([])->
+    {ok,S}=gen_tcp:connect(localhost,10009,[]),
+    gen_tcp:send(S, term_to_binary({some_atom, 123, 12.23, "hogehoge"})),
+    case gen_tcp:recv(S,0,1024) of
+	{ok, Packet}->
+	    erlang:display(binary_to_term(Packet))
+    end,
+    gen_tcp:close(S).
+  
+		 

File echo_server.ml

     | ADDR_UNIX(_)->
 	prerr_endline "connection from the unix domain ... ";
   end;
-  let rec my_read_ sock buf start remain = 
-    let len = recv sock buf start remain [MSG_PEEK] in
-      begin match remain with 
-	| 0 -> (start+len, buf) ;
-	| r -> my_read_ sock buf (start+len) (r-len);
-      end;
-  in
-  let my_read sock len = 
-    let buf = String.create len in
-      my_read_ sock buf 0 len 
-  in
-  let (len, buffer) = my_read csock 1024 in
-    prerr_endline ((string_of_int len) ^ " bytes recv'd");
-    prerr_endline buffer;
+  let recv_term sock = 
+    let buf = String.create 1024 in
+    let rec recv_ start toread = 
+      let len = recv sock buf start toread [MSG_PEEK] in
+	prerr_endline ((string_of_int len) ^ " bytes recv'd");
+	begin match Bert.decode_binary buf with 
+	  | Bert.More(length) -> recv_ start (len+length+toread);
+	  | Bert.Ok(term, remain) ->   Bert.print_erlterm term;
+	  | Bert.None ->      print_endline "error?";
+	end;
+    in recv_ 0 2 in
+  let _ = recv_term csock in
+    
+    (*     prerr_endline buffer; *)
     close csock;
     prerr_endline "----------------";;