2016-07-15 62 views
1

我发现这个例子https://play.golang.org/p/zyZJKGFfyT保持与GO听TCP服务器的最佳方式是什么?

package main 

import (
    "fmt" 
    "net" 
    "os" 
) 

// echo "Hello server" | nc localhost 5555 
const (
    CONN_HOST = "localhost" 
    CONN_PORT = "5555" 
    CONN_TYPE = "tcp" 
) 

func main() { 
    // Listen for incoming connections. 
    l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT) 
    if err != nil { 
     fmt.Println("Error listening:", err.Error()) 
     os.Exit(1) 
    } 
    // Close the listener when the application closes. 
    defer l.Close() 
    fmt.Println("Listening on " + CONN_HOST + ":" + CONN_PORT) 
    for { 
     // Listen for an incoming connection. 
     conn, err := l.Accept() 
     if err != nil { 
      fmt.Println("Error accepting: ", err.Error()) 
      os.Exit(1) 
     } 
     // Handle connections in a new goroutine. 
     go handleRequest(conn) 
    } 
} 

// Handles incoming requests. 
func handleRequest(conn net.Conn) { 
    // Make a buffer to hold incoming data. 
    buf := make([]byte, 1024) 
    // Read the incoming connection into the buffer. 
    reqLen, err := conn.Read(buf) 
    reqLen = reqLen 
    if err != nil { 
    fmt.Println("Error reading:", err.Error()) 
    } 
    // Send a response back to person contacting us. 
    conn.Write([]byte("hello")) 

    conn.Close() 

} 

回声 “测试” | nc 127.0.0.1 5555

在生产中监听GO服务器的最佳方式是什么? 在本地主机工作正常,但生产

回答

2

拿出我的水晶球:我相信你的问题是你的服务器只在本地主机上监听,但你希望能够从其他机器连接到它。将CONN_HOST"localhost"更改为""(空字符串),以便net.Listen将在:5555上收听。这意味着连接将在任何接口端口被接受5555

+0

我与“须藤$ GOPATH /斌/ TCP”,但我如何让它在backgrount – EdgarAlejandro

+0

我改变CONN_HOST从“localhost”的都跑了围棋程序到“ip_server” – EdgarAlejandro

相关问题