zoukankan      html  css  js  c++  java
  • 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)
    	}
    }
    
  • 相关阅读:
    cocos2d-x之物理引擎初试
    cocos2d-x之猜数字游戏
    cocos2d-x之加法计算器
    cocos2d-x之悦动的小球
    cocos2d-x之多个移动的小球
    cocos2d-x之json文件读取初试
    cocos2d-x之xml文件读取初试
    cocos2d-x之使用plist文件初试
    cocos2d-x之文件读写
    cocos2d-x之首选项数据初试
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/15363627.html
Copyright © 2011-2022 走看看