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)
    	}
    }
    
  • 相关阅读:
    汉诺塔
    给出一个字符串,要求插入最少的字符,使得原字符串为一个回文串
    最长回文子串
    回文数 第N个回文数
    屋子里有1到100号100盏关闭的灯
    无头结点的单链表删除一个中间结点
    单链表逆转
    编程之美2.21 加法
    在一个数组中找 差值最大的两个数 差值最小的两个数 推广到 点对
    斐波那契
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/15363627.html
Copyright © 2011-2022 走看看