Erlang连接Golang服务1-初探

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) // e.g., connection aborted
            continue
        }
        handleConn(conn) // handle one connection at a time
    }
}

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.Printf(string(result))
    fmt.Println("=============================================")
}

下面的是Erlang客户端的代码

%% 文件名mclient.erl
-module(mclient).
-author("Hua").

%% API
-export([client/0]).

client() ->
  SomeHostInNet = "localhost",
  Port = 8080,
  %% {packet,4}后面的数字代表数据头的字节
  {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

猜你喜欢

转载自blog.csdn.net/geange/article/details/80479808