私はこの囲碁TCPソケットgolangのTCPソケット - プロセス、複数のメッセージ
package main
import (
"fmt"
"io"
"log"
"net"
"bytes"
)
func main() {
l, err := net.Listen("tcp", ":1200")
if err != nil {
log.Fatal(err)
}
defer l.Close()
for {
conn, err := l.Accept()
if err != nil {
log.Fatal(err)
}
go func(c net.Conn) {
var buf bytes.Buffer
io.Copy(&buf, c)
fmt.Println("total size:", buf.Len())
s := buf.String()
println(s)
c.Close()
}(conn)
}
}
を持って、メッセージを受け入れるそれを文字列に変換し、それを表示するが、接続がクライアントによって閉じられていない場合、私はすることができませんサーバー上に期待通りに表示されたメッセージを参照してください。
クライアント接続を閉じる必要なくクライアントから複数のメッセージを送信するにはどうすればいいですか?ここでは、クライアントNodeJs
でvar net = require('net');
let packet = {
Target: { Host: "", Port: "9000" },
Name: { Family: "Newmarch", Personal: "Jan" },
Email: [
{ Kind: "home", Address: "[email protected]"},
{ Kind: "work", Address: "[email protected]"}
]
}
var client = new net.Socket();
client.connect(1200, '0.0.0.0', function() {
console.log('Connected');
client.write((new Buffer(JSON.stringify(packet), 'UTF-8')));
client.end();
//client.write('\n');
});
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy();
});
client.on('close', function() {
console.log('Connection closed');
});
ありがとうvaleriano cossu
の答えは、あなたが何らかの形であなたのメッセージを破るする必要が述べたように。 TCP自体はストリーミングプロトコルであり、パケットベースのものではありません。 –