golang通过socket与java通讯

今天有师弟问我计算机专业学计算机网路基础究竟有什么作用?一个项目只一门编程语言吗?作为回答,我写下这篇文章。
本文主要是实现echo服务器/客户端,服务器采用谷歌开源的golang编写,客户端采用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();
    }

}

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

posted @ 2015-12-09 02:15  伤心中国人  阅读(297)  评论(0编辑  收藏  举报