Erlang 建立乙個簡單的TCP伺服器

2021-09-17 22:44:26 字數 1666 閱讀 5891

一、建立 tcpserver.erl

-module(tcpserver).

-export([start/0]).

start() ->

% 建立乙個埠2345用於監聽來自客戶端的請求, 是資訊表頭用4位元組表示長度,需要與客戶端一致

= gen_tcp:listen(2345, [binary, , , ]),

% 開始接受乙個請求

= gen_tcp:accept(listen),

% 接受請求成功後,關閉監聽的埠不讓其他請求處理

gen_tcp:close(listen),

loop(socket).

loop(socket) ->

receive

% 接收到的來自客戶端的資訊

->

receive = binary_to_list(bin),

io:format("server received content = ~p~n", [receive]),

content = receive ++ " hello",

% 向客戶端傳送資訊

gen_tcp:send(socket, content),

loop(socket);

% 當客戶端請求關閉tcp連線時

->

io:format("server socket closed~n")

end.

二、建立 tcpclient.erl

-module(tcpclient).

-export([start/1]).

start(str) ->

= gen_tcp:connect("localhost", 2345, [binary, ]),

ok = gen_tcp:send(socket, str),

receive

->

receive = binary_to_list(bin),

io:format("client received binary = ~p~n", [receive]),

gen_tcp:close(socket)

end.

三、同時編譯,並在不同視窗呼叫

c(tcpserver).

c(tcpclient).

a 視窗:

tcpserver:start().                      % 阻塞並監聽來自客戶端的請求
b視窗:

tcpclient:start("aaa").                          % 傳送aaa給服務端
可見a視窗得到響應:

server received content = "abcd"

server socket closed

ok

b視窗得到響應:

client received binary = "abcd hello"

ok

我們就完成了簡單的乙個tcp伺服器

參考該文:

erlang 自己搞定乙個簡單的MakeFile

在windows下面執行erlang的檔案 就是.beam檔案 每次都要從cmd,cd到你編譯好erlang檔案的目錄下就是有 beam 的目錄下,這樣超級麻煩。有沒有什麼辦法,在cmd中,輸入erl,直接就直接可以執行 不用再cd到你的.beam的資料夾下 你已經編譯好的的.beam檔案。首先要修...

建立乙個簡單的執行緒

handle createthread in opt lpsecurity attributes lpthreadattributes,security attributes 結構指定了這個執行緒的安全屬性,如果填 null 則就以預設的安全描述子建立,並且返回的控制代碼不會被繼承。in size ...

建立乙個簡單的畫板

1.cv.createtrackbar 有5個引數 滑動條的名字 視窗的名字 數值的最小值 數值的最大值 函式2.cv.gettrackbarpos 有2個引數 滑動條的名字 視窗的名字 函式的返回值是滑動條的數值。import cv2 as cv import numpy as np def no...