php通过socket访问golang 1. [代码] socket.php ?phpheader("Content-type: text/html; charset=utf-8");$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);socket_connect($socket,"192.168.1.209","4444");$s = array('d'=1,'c'=3,'b'=8);$json
1. [代码]socket.php
<?php header("Content-type: text/html; charset=utf-8"); $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_connect($socket,"192.168.1.209","4444"); $s = array('d'=>1,'c'=>3,'b'=>8); $json = json_encode($s); $f = $json."\n"; socket_write($socket,$f,strlen($f)); $string = ""; $buf = ""; while ($int = socket_recv($socket, $buf, 1204,MSG_WAITALL)){ $string .= $buf; } $arr = json_decode($string,true); print_r($arr);
2. [代码]server.go
package main import ( "bufio" "encoding/json" "fmt" "net" "os" ) type Server struct { ServerName string ServerIp string } type Serverslice struct { Servers []Server } func main() { service := ":4444" tcpAddr, err := net.ResolveTCPAddr("tcp4", service) checkError(err) listener, err := net.ListenTCP("tcp", tcpAddr) checkError(err) fmt.Println("======>") fmt.Println("启动侦听程序") for { conn, err := listener.Accept() if err != nil { continue } fmt.Println("=========>") fmt.Println("侦听成功") go handleClient(conn) } } func handleClient(conn net.Conn) { defer conn.Close() var jsonStr Serverslice jsonStr.Servers = append(jsonStr.Servers, Server{ServerName: "nc", ServerIp: "127.0.0.1"}) jsonStr.Servers = append(jsonStr.Servers, Server{ServerName: "sh", ServerIp: "127.0.0.2"}) jsonStr.Servers = append(jsonStr.Servers, Server{ServerName: "hn", ServerIp: "127.0.0.3"}) b, err := json.Marshal(jsonStr) if err != nil { fmt.Println("json err:", err) } a, _ := bufio.NewReader(conn).ReadString('\n') fmt.Println(string(a)) conn.Write([]byte(b)) fmt.Println(string(b)) } func checkError(err error) { if err != nil { fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) os.Exit(1) } }