Erlang连接Golang服务1-初探
为啥要做这个?好玩呗!
使用Erlang作为客户端,Golang写服务端,使用TCP协议连接。
下面的是Golang简单的服务端的代码,一个单线程的服务器,监听8080端口,收到信息就打印收到的内容。
package main
import (
"fmt"
"io/ioutil"
"log"
"net"
)
func main() {
listener, err := net.Listen("tcp", "localhost:8080")
if err != nil {
log.Print(err)
}
for {
conn, err := listener.Accept()
if err != nil {
log.Print(err)
continue
}
handleConn(conn)
}
}
func handleConn(conn net.Conn) {
defer conn.Close()
result, err := ioutil.ReadAll(conn)
if err != nil {
log.Fatal(err)
}
for index, tb := range result {
fmt.Printf("index=%d, cOntent=%c\n", index, tb)
}
fmt.Println("=============================================")
}
下面的是Erlang客户端的代码
-module(mclient).
-author("Hua").
-export([client/0]).
client() ->
SomeHostInNet = "localhost",
Port = 8080,
{ok, Sock} = gen_tcp:connect(SomeHostInNet, Port, [binary, {packet, 4}]),
ok = gen_tcp:send(Sock, "Some Data"),
ok = gen_tcp:close(Sock).
当为{packet, 0}
index=0, cOntent=S
index=1, cOntent=o
index=2, cOntent=m
index=3, cOntent=e
index=4, cOntent=
index=5, cOntent=D
index=6, cOntent=a
index=7, cOntent=t
index=8, cOntent=a
当为{packet, 4}
index=0, cOntent=
index=1, cOntent=
index=2, cOntent=
index=3, cOntent=
index=4, cOntent=S
index=5, cOntent=o
index=6, cOntent=m
index=7, cOntent=e
index=8, cOntent=
index=9, cOntent=D
index=10, cOntent=a
index=11, cOntent=t
index=12, cOntent=a