• 198. go tcp编程


    客户端代码

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"net"
    	"os"
    	"strings"
    )
    
    func main() {
    	// 连接服务端
    	conn, err := net.Dial("tcp", "127.0.0.1:8888")
    	if err != nil {
    		fmt.Println("client dial err=", err)
    		return
    	}
    	// 构建reader, 从控制台读入数据
    	reader := bufio.NewReader(os.Stdin)
    
    	for {
    		// 按行读取数据
    		line, err := reader.ReadString('
    ')
    		if err != nil {
    			fmt.Println("readingString err", err)
    
    		}
    		// 去除换行
    		line = strings.Trim(line, " 
    ")
    		if line == "exit" {
    			fmt.Println("将客户端退出")
    			break
    		}
    		// 传送数据
    		_, err = conn.Write([]byte(line + "
    "))
    		if err != nil {
    			fmt.Println("conn.Write err=", err)
    		}
    		// fmt.Printf("客户端发送了%d字节数据, 退出", n)
    	}
    }
    
    

    服务端代码

    package main
    
    import (
    	"fmt"
    	"net"
    )
    
    func process(conn net.Conn) {
    	defer conn.Close() // 延迟关闭
    
    	for {
    		buf := make([]byte, 1024)
    		fmt.Printf("等待客户端%s 发送消息
    ", conn.RemoteAddr().String())
    		// 读取数据
    		n, err := conn.Read(buf)
    		if err != nil {
    			fmt.Printf("客户端退出err=%v", err)
    			return
    		}
    		fmt.Println(string(buf[:n]))
    	}
    }
    
    func main() {
    	fmt.Println("服务器开始监听")
    	listen, err := net.Listen("tcp", "0.0.0.0:8888")
    	if err != nil {
    		fmt.Println("list err=", err)
    		return
    	}
    	defer listen.Close()
    
    	for {
    		fmt.Println("等到客户端连接...")
    		conn, err := listen.Accept()
    		if err != nil {
    			fmt.Printf("Accept() err =%v", err)
    		} else {
    			fmt.Printf("Accept() suc con=%v 客户端ip=%v
    ", conn, conn.RemoteAddr().String())
    		}
    		go process(conn)
    	}
    }
    
  • 相关阅读:
    数据结构(一)线性表单链表试题
    虚拟研讨会:如何设计好的RESTful API?
    如何生成RestFul Api文档
    webstorm 10 设置文件的默认编码
    HAML学习
    Nodejs初阶之express
    RESTful API 简书
    解读Nodejs多核处理模块cluster
    Nginx做NodeJS应用负载均衡配置实例
    拿nodejs快速搭建简单Oauth认证和restful API server攻略
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/15363627.html
Copyright © 2020-2023  润新知