golang通过socket与java通讯

来源:互联网 发布:学神it linux视频下载 编辑:程序博客网 时间:2024/06/16 05:17

今天有师弟问我计算机专业学计算机网路基础究竟有什么作用?一个项目只一门编程语言吗?作为回答,我写下这篇文章。
本文主要是实现echo服务器/客户端,服务器采用谷歌开源的golang编写,客户端采用java编写(主要是对这两门语言的编程稍微熟悉点),本文的目的是为了说明,编程中,网络基础是十分重要的,一个项目中,往往不仅仅只用一门编程语言,由于本人也是入门,写的不好地方,望指正,谢谢。另有有不懂的,可联系本人,下面上代码:

//server.go//客户端,主要是在9000端口创建监听程序,用于接受客户端连接package mainimport (    "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();    }}

运行结果截图:
服务端服务器图片
客户端客户端图片

0 0
原创粉丝点击