一般GO语言是来写服务器,主要是省事线程的编写的过程。

和UNITY3D来进行通信

主要代码

func main() {

	Addr, _ := net.ResolveTCPAddr("tcp4", ":6000")

	listener, err := net.ListenTCP("tcp", Addr)
	if err != nil {
		fmt.Fprintf(os.Stderr, "错误: %s", err.Error())
		os.Exit(1)
	}
	for {
		conn, err := listener.Accept()
		if err != nil {
			continue
		}
		go handleClient(conn)
	}
}

func handleClient(conn net.Conn) {
	defer conn.Close()
	var buf [128]byte
	for {
		n, err := conn.Read(buf[0:])
		if err != nil {
			return
		}
		rAddr := conn.RemoteAddr()
		fmt.Println("接受的消息:", rAddr.String(), string(buf[0:n]))
		_, err2 := conn.Write([]byte("6*0.5"))
		if err2 != nil {
			return
		}
	}
}

 

在u3d中有编写代码来接受收到的参数:


		ClientSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

		string ip = GetIP ().ToString ();//服务器ip
		Debug.Log (ip);
		IPAddress ipa = IPAddress.Parse (ip);

		IPEndPoint iep = new IPEndPoint (ipa, 6000);

		try {

			ClientSocket.Connect (iep);//连接到服务器

		thread = new Thread (new ThreadStart (ClientReceive));

			thread.Start ();

		} catch (Exception ex) {

			Debug.Log (ex.Message);

			clientReceiveValue = ex.Message;

		}

然后编写两个线程,一个接受,一个发送,收到的参数进行游戏或者程序绘图。