Lado del servidor:
paquete main import ( "fmt" "net" ) func main () { // Crear escucha de monitoreo , err: = net.Listen ("tcp", "localhost: 8080") if err! = nil { fmt.Println (" Error al establecer la supervisión tcp, err = ", err) return } diferir func () { listener.Close () fmt.Println (" El servidor está cerrado ") } () fmt.Println (" Escuchando las solicitudes del cliente ") para { / / Ciclo de acceso a un cliente (adquirir una conexión de línea dedicada Conn) conn, _: = listener.Accept () fmt.Println ("Acceso exitoso al cliente:", conn.RemoteAddr ()) // Lanza el cliente conectado a la rutina concurrente para procesar go func () { / * En una tarea concurrente separada con el cliente actual IO * / for { // En la conexión de línea dedicada con Cliente específico IO buffer: = make ([] byte, 1024) n, _: = conn.Read (buffer) msg: = string (buffer [: n]) fmt.Printf ("Cliente% v:% s \ n", conn.RemoteAddr (), msg) // Responde al mensaje conn.Write ([] byte ("read Mensaje: "+ msg)) // Determinar si el cliente desea divorciarse si msg ==" salir "{ // Desconectarse del cliente conn.Close () break } } } () } }
lado del cliente:
paquete main import ( "fmt" "net" ) func main () { // Marque usando el protocolo udp, dirección remota 127.0.0.1:8080 conn, _: = net.Dial ("tcp", "127.0.0.1:8080" ) // Cierre la conexión antes de que el programa salga y libere el io resource defer func () { conn.Close () fmt.Println ("El cliente ha salido") } () // Cree un búfer para recibir mensajes : = make ([ ] byte, 1024) // Texto del mensaje que debe enviar el usuario var userInput string para { // Recibir la entrada del usuario fmt.Print ("Ingrese:") fmt.Scan (& userInput) // Salga si el usuario ingresa exit // El cliente inicia una conversación conn.Write ([] byte (userInput)) // Recibe el mensaje del servidor n, err: = conn.Read (buffer) fmt.Println (err) fmt.Println ("服务 端 :" + string (buffer [: n])) if userInput == "exit" { break } } }