Golang通过socket与java通讯

时间:2022-05-04
本文章向大家介绍Golang通过socket与java通讯,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

下面上代码:

//server.go

//客户端,主要是在9000端口创建监听程序,用于接受客户端连接

package main



import (

    "bufio"

    "fmt"

    "log"

    "net"

    "time"

)



func main() {

    tcpAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:9000")

    if err != nil {

        log.Fatalln("地址解析错误", err)

    }

    tcpListener, err := net.ListenTCP("tcp", tcpAddr)    //创建监听

    if err != nil {

        log.Fatalln("地址监听失败", err)

    }



    defer tcpListener.Close()



    fmt.Println("开始接受客户端连接:")

    tcpConn, err := tcpListener.AcceptTCP()    //接受客户端连接

    if err != nil {

        log.Fatalln("接受客户端连接失败", err)

    }

    fmt.Println("客户端连接成功")

    _, err = tcpConn.Write([]byte("你好,我是服务器,欢迎连接!n"))    //向客户端写数据

    if err != nil {

        log.Fatalln("往客户端数据失败", err)

    }

    reader := bufio.NewReader(tcpConn)



    for {

        line, err := reader.ReadString('n')   //读取客户端发来的数据

        if err != nil {

            log.Fatalln("读取数据失败", err)

        }

        fmt.Println("客户端发来数据:", line)



        _, err = tcpConn.Write([]byte("我是服务器,我是服务器,收到请回答,收到请回答n"))

        if err != nil {

            log.Fatalln("往客户端发送数据失败", err)

        }

        time.Sleep(1 * time.Second)    //延时一秒

    }

}
//Client.java

//主要是连接服务端的9000端口,然后读数据,写数据

package pri.guanlaolin.socket;



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;



public class Client {



    private PrintWriter cout;

    private Socket socket;



    public Client() throws UnknownHostException, IOException,

            InterruptedException {

        // TODO Auto-generated constructor stub



        this.socket = new Socket("127.0.0.1", 9000);   //连接服务器9000端口



        this.cout = new PrintWriter(socket.getOutputStream());

        this.cout.println("你好,我是客户端!");     //向服务器写入数据



        BufferedReader br = new BufferedReader(new InputStreamReader(

                socket.getInputStream()));



        String line = "连接服务器成功";

        System.out.println(line);



        while (line != null) {

            line = br.readLine();     //读取服务器数据

            System.out.println(line);     

            this.cout.println("客户端收到,客户端收到");     //向服务器发送数据

            this.cout.flush();

            Thread.sleep(1000);    //延时1秒

        }

        br.close();

        this.cout.close();

        socket.close();

    }



    public static void main(String[] args) throws UnknownHostException,

            IOException, InterruptedException {

        // TODO Auto-generated method stub

        new Client();

    }



}