golang通过socket与java通讯

u013025612 · · 2974 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

作为计算机专业的学生(虽然很水),直到今天还有二年级的师弟问我计算机专业学计算机网路基础究竟有什么作用?项目中是否只能用一门编程语言?……解释了半天,没能解释明白(原谅计算机专业读久了,口才真的变烂了),于是写下这篇文章。
本文主要是实现echo服务器/客户端,服务器采用golang编写,客户端采用java编写(别问我为什么不用C++,如果会早就用了),本文的目的是为了说明,现代编程中,网络是十分重要的,另外一个项目中,不仅仅只能用一门编程语言,由于本人也是入门,写的不好地方,望指正,谢谢。有不懂的,可评论,下面上代码:

//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();
    }

}

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


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:u013025612

查看原文:golang通过socket与java通讯

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

2974 次点击  
加入收藏 微博
2 回复  |  直到 2000-01-01 00:00:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传