以下是使用Go语言编写的一个简单的TCP服务器程序,它可以监听传入的地址和端口,并在有新的客户端连接时打印客户端信息,并创建一个协程来非阻塞地接收客户端消息。如果收到客户端的消息,则打印消息内容。

package main

import (
	"fmt"
	"log"
	"net"
)

func handleClient(conn net.Conn) {
	defer conn.Close()

	remoteAddr := conn.RemoteAddr().String()
	fmt.Println("Client connected:", remoteAddr)

	// 创建协程来非阻塞接收客户端消息
	go func() {
		for {
			buf := make([]byte, 1024)
			n, err := conn.Read(buf)
			if err != nil {
				log.Println("Error reading client message:", err)
				return
			}
			msg := string(buf[:n])
			fmt.Println("Received message from", remoteAddr, ":", msg)
		}
	}()

	// 在此处可以添加你想要执行的其他操作,或者发送消息给客户端

	// 在此处添加你想要执行的其他操作,或者发送消息给客户端

}

func main() {
	// 监听地址和端口
	listener, err := net.Listen("tcp", "127.0.0.1:8080")
	if err != nil {
		log.Fatal("Error starting TCP server:", err)
	}
	defer listener.Close()

	fmt.Println("TCP server is listening on", listener.Addr())

	// 接受新的客户端连接
	for {
		conn, err := listener.Accept()
		if err != nil {
			log.Println("Error accepting client connection:", err)
			continue
		}

		// 处理客户端连接
		go handleClient(conn)
	}
}

上述代码中,handleClient函数用于处理每个客户端连接。它首先打印客户端的连接信息,然后创建一个协程来非阻塞地接收客户端的消息。在这个示例中,我们只是简单地将收到的消息打印出来,你可以根据自己的需求进行扩展。

main函数中,我们使用net.Listen函数在指定的地址和端口上创建一个TCP服务器,并使用listener.Accept循环接受新的客户端连接。每当有新的客户端连接时,我们会创建一个新的协程来处理该连接,以便可以同时处理多个客户端连接。

请注意,上述代码只是一个简单示例,可能还需要添加错误处理、异常退出等功能以确保程序的稳定性

用go语言写一个TCPS的服务程序监听传入的地址、端口有新的client连接后打印client信息并创建个协程来非阻塞式接收client消息如果收到client的消息则打印消息内容。

原文地址: http://www.cveoy.top/t/topic/iYRC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录