注:该节主要是了解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);
}
}
效果图: