【Erlang聊天室之一】C#与Erlang的一次Socket通信
注:该节主要是了解Erlang的通信,还没真正开发Erlang聊天室。
功能点:
Erlang写服务器,通过接受也仅能接受一次客户端的信息,然后直接返回给客户端。
C#写客户端,硬编码一个字符串“TTTT”,点击发送,发给服务器。
1.服务器端代码
-module(my_tcp_server). -export([server/0]). server() ->
%监听30087的端口 {ok,Server}=gen_tcp:listen(30087,[binary,{active,false}]),
%接受连接 {ok,Client}=gen_tcp:accept(Server),
%接受Client的数据 {ok,Msg}=gen_tcp:recv(Client,0), io:format("Received > ~p/n",[Msg]),
%返回从客户端传过来的数据到客户端 gen_tcp:send(Client,Msg),
%只接受一次请求,就关闭连接 gen_tcp:close(Client), gen_tcp:close(Server).
2.客户端
public partial class Form1 : Form { static Socket socket; private static byte[] result = new Byte[1024]; public Form1() { InitializeComponent(); }
// 点击按钮,就开始连接服务器,并且硬编码字符串“TTTT”发送到服务器。 private void button1_Click(object sender, EventArgs e) { IPAddress ip = IPAddress.Parse("127.0.0.1"); socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp); socket.Connect(new IPEndPoint(ip,30087)); socket.Send(Encoding.UTF8.GetBytes("TTTT")); int receiveLength = socket.Receive(result); textBox1.Text += Encoding.UTF8.GetString(result, 0, receiveLength); } }
效果图:

浙公网安备 33010602011771号