Go-socket实现多语言间通信

44次阅读

共计 819 个字符,预计需要花费 3 分钟才能阅读完成。

前言

socket 提供了在传输层进行网络编程的方法,它比基于 http 协议的接口传输更高效,RPC(Remote Procedure Call) 是远程过程调用,常用于分布式系统等,而 rpc 很多是基于 socket 实现的。不了解 socket、http 等协议请阅读

https://blog.csdn.net/guyan03…。

Socket 都可以用“打开 open –> 读写 write/read –> 关闭 close”模式来操作。它不局限于某一语言,这里我们主要讲 Go、php 语言基于 socket 实现通讯。

序列化采用 json,数据格式比较简单, 支持多种语言。

Go socket 采用 c / s 架构

客户端:net.Dial() Write() Read() Close()

服务器:net.Listen() Accept() Read() Write() Close()

源代码地址:https://github.com/guyan0319/…

测试

1、下载源代码至 GOPATH 目录 golangSocketPhp

2、运行服务端,在 example 目录下 server.go

go run server.php

输出:

Waiting for clients

3、新窗口下运行客户端,在 example 目录下 client.go

go run client.go

输出:

receive data string[6]:golang

golang 这个是从服务端返回的数据。

4、运行 php 语言客户端,在 php 目录下的 socket_client.php

php -f socket_client.php

或浏览器访问 http://localhost/xxx/socket_c… 配置自己的网址

输出结果:

client write success
server return message is:
php

小结:

选 json 序列化,主要考虑它实现起来简单,很多语言支持。缺点是序列化效率低,序列化后数据相对比较大(这里跟 protobuf 对比)。

links

  • 目录

正文完
 0