我的java netty client寫法如下
NioEventLoopGroup worker = new NioEventLoopGroup();
bootstrap.group(worker);
bootstrap.channel(NioSocketChannel.class);
bootstrap.handler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel channel) throws Exception {
//大端發送順序
channel.pipeline().addLast(new LengthFieldBasedFrameDecoder(ByteOrder.BIG_ENDIAN,1024*1024,2,2,-4,0,true));
channel.pipeline().addLast(new ClientHandler());
}
});
ChannelFuture f = bootstrap.connect("127.0.0.1", 3000);
//發送訊息
byte[] msg = "I am java netty client msg".getBytes();
//如果msg為單純的字串,go可以接受到,如果改成byte陣列,go就一阻塞到 conn.Read(buffer)
f.channel().writeAndFlush(msg)
我的golang tcp server 寫法如下
func main() {
listen, err := net.Listen("tcp", "127.0.0.1:30000")
if err != nil {
fmt.Println("listen failed, err:", err)
return
}
defer listen.Close()
for {
conn, err := listen.Accept()
if err != nil {
fmt.Println("accept failed, err:", err)
continue
}
go func() {
defer conn.Close()
var num int32
buffer := make([]byte, 6)
_, err := conn.Read(buffer) //如果java netty 發的byte[] 位元組陣列的話,則一直阻塞在這一行
if err != nil {
return
}
buf := bytes.NewReader(buffer)
err = binary.Read(buf, binary.BigEndian, &num)
fmt.Println(buf)
}()
}
}
uj5u.com熱心網友回復:
golang監聽的埠是30000,netty的連接埠是3000,埠不對,改成一樣的埠。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122379.html
標籤:Java相關
下一篇:寫一段代碼實作用戶注冊,要求用戶名為郵箱,密碼長度(6-20),兩次密碼一致時,向用戶提示 ××(郵箱前綴)歡迎注冊。
