gen-tcp

    0熱度

    1回答

    當使用gen_tcp行爲時,我發現了一個有趣的問題。我有一臺服務器和一個客戶端。服務器接受連接,客戶端創建許多進程,都嘗試連接到偵聽服務器。 如果我嘗試啓動產生許多進程的客戶端,這些進程都嘗試同時連接到套接字,則很多進程都會失敗。但是,如果我把timer:sleep(x)然後每個插座正在接受。 這是否意味着gen_tcp:accept()有一個限制,它可以接受一些連接請求? 代碼爲服務器和客戶端如

    0熱度

    1回答

    我已閱讀文檔'inet','gen_tcp',但無法理解錯誤在哪裏。 connect_option()= {IP,INET:socket_address()} socket_address()= IP-地址() IP-地址()= ip4_address()| ip6_address() ip6_address()= {0..65535, 0..65535, 0..65535, 0..65535,

    2熱度

    1回答

    我有一個ssl服務器,我想在接收到第一個ssl:recv到原始gen_tcp後降級。假設這可以用來做到這一點,我找不到如何使用它的例子。而且我不是那麼擅長使用Erlang的文件尚未http://erlang.org/doc/man/ssl.html#close-2 我有點糊塗了上NewController :: PID() 如何=超時()| {NewController :: pid(),time

    0熱度

    1回答

    有誰知道如何連接到ipv6的tcp服務器地址。以下嘗試但不起作用。 {ok, Socket} = gen_tcp:connect("2a01:488:67:1000:253d:cd31:0:1", 5000, [{active, false},inet6]). {error,enetunreach} 這 {ok, Socket} = gen_tcp:connect("[2a01:488:67

    1熱度

    1回答

    我有一個GenServer通過gen_tcp連接到遠程TCP連接。 opts = [:binary, active: true, packet: :line] {:ok, socket} = :gen_tcp.connect('remote-url', 8000, opts} 我處理消息有: def handle_info({:tcp, socket, msg}, stage) do IO.ins

    1熱度

    2回答

    我沒有看到如何增加一個上司的崩潰調用gen_tcp:聽線程實際上會重新啓動該名工人。由於崩潰會使我想在短時間內聽到無用的端口。當發生崩潰並且我試圖手動重新啓動我的應用程序時,我收到「{error,eaddrinuse}」。我還沒有爲這名工作人員實施任何監督,因爲我沒有看到它會如何工作。 如何重新啓動gen_tcp:listen?

    0熱度

    1回答

    我通過使用Erlang :gen_tcp模塊的實現在Phoenixframwork中開發了一個TCP服務器。 我可以通過調用:gen_tcp.listen(port)啓動服務器,然後在此端口上監聽新的連接。 一個客戶端是藥房的自動採摘系統(基本上是一個自動藥物分配機器人)。 所以作爲一個tcp客戶端,機器人能夠打開到我的tcp服務器的連接。服務器通過機器人通過handle_info回調方法偵聽新消

    0熱度

    1回答

    我目前有一個處理來自客戶端的多個連接的服務器,以及使用兩個連接連接到服務器的客戶端。我的客戶端有兩個進程分別處理髮送和接收來自服務器的信息,但不是兩者都有。我現在遇到的問題是當我想關閉套接字時,我的讀取過程停留在gen_tcp:recv/2塊上。如果我超時,套接字在達到超時時關閉。我的問題是,是否有可能不會關閉套接字的gen_tcp:recv/3調用。 這就是我的閱讀過程。 read(Socket

    3熱度

    1回答

    有沒有什麼辦法可以獲得傳入消息的主體。還有ether/IP的標題呢?現在我使用gen_tcp並通過主動控制進程接收消息。 現在插座以這樣的方式通過「of_driver」打開: gen_tcp:connect(IpAddr, Port, [binary, {packet, raw}, {active, false}],CONNECT_TIMEOUT)

    1熱度

    1回答

    當兩個通信端都基於erlang並且文檔清楚地表明使用{packet,N}添加了一個頭時,消息的大小和gen_tcp:recv/2在接收時刪除頭。這非常簡單。但是,如果接收程序不是基於erlang的,而是基於C++的,那麼如何僅解析頭並知道消息的大小,以便我可以分配這些內存量。我使用到現在, //Receive a message from client while((read_size = re