我使用以下代码在PHP脚本和Go之间创建了一个连接:
Go(服务器):
ln, err1 := net.Listen("tcp", ":5432")
if err1 != nil{
fmt.Println(err1.Error())
return
}
conn, err2 := ln.Accept()
if err2 != nil{
fmt.Println(err2.Error())
return
}
buf := make([]byte, 11)
_, err3:= conn.Read(buf)
if err3 != nil{
fmt.Println(err3.Error())
return
}
fmt.Println(string(buf))
_, err := conn.Write([]byte("HELLO WORLD"))
if err != nil {
fmt.Println(err.Error())
return
}
PHP(客户端):
$address = gethostbyaddr("localhost");
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($socket === false){
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error());
}
$result = socket_connect($socket, $address, 5432);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket));
}
if($socket!==false && $result!==false)
echo "ok";
socket_write($socket, "hello world", 11);
fflush($socket);
if($out = socket_read($socket, 4)){
echo $out;
}
我可以在Go服务器上连接并接收“hello world”。
问题:当我尝试将某些内容发送回PHP时。我得到的只是_, err := conn.Write([]byte(msg + "\n"))
上的“无效参数”。