zoukankan      html  css  js  c++  java
  • go tcp

    原文:http://blog.csdn.net/qq_15437667/article/details/51042366

    1.Socket编程

    以前使用Socket编程时,一般是如下步骤

    1. 建立socket,socket
    2. 绑定socket,bind
    3. 监听,listen
    4. 接受连接,accept
    5. 接受/发送,recv/send

    go tcp版真的很省事

    服务端:

    就是Listen、Accept、Read/Write

    客户端

    就是Dial、Read/Write

     1 package main
     2 
     3 import (
     4     "fmt"
     5     "net"
     6     "os"
     7 )
     8 
     9 func checkError(err error){
    10     if  err != nil {
    11         fmt.Println("Error: %s", err.Error())
    12         os.Exit(1)  
    13     }
    14 }
    15 
    16 func recvConnMsg(conn net.Conn) {
    17 //  var buf [50]byte
    18     buf := make([]byte, 50) 
    19 
    20     defer conn.Close()
    21 
    22     for {
    23         n, err := conn.Read(buf)
    24 
    25         if err != nil {
    26             fmt.Println("conn closed")
    27             return  
    28         }   
    29 
    30         //fmt.Println("recv msg:", buf[0:n])
    31         fmt.Println("recv msg:", string(buf[0:n]))
    32     }   
    33 }
    34 
    35 func main() {
    36     listen_sock, err := net.Listen("tcp", "localhost:10000")
    37     checkError(err)
    38     defer listen_sock.Close()
    39 
    40     for {
    41         new_conn, err := listen_sock.Accept()
    42         if err != nil {
    43             continue    
    44         }   
    45 
    46         go recvConnMsg(new_conn)
    47     }
    48 
    49 }
    server
     1 package main
     2 
     3 import (
     4     "fmt"
     5     "net"
     6     "os"
     7 )
     8 
     9 func checkError(err error){
    10     if  err != nil {
    11         fmt.Println("Error: %s", err.Error())
    12         os.Exit(1)  
    13     }
    14 }
    15 
    16 func main() {
    17     conn, err := net.Dial("tcp", "127.0.0.1:10000")
    18     checkError(err)
    19     defer conn.Close()  
    20 
    21     conn.Write([]byte("Hello world!"))  
    22 
    23     fmt.Println("send msg")
    24 }
    client
  • 相关阅读:
    python dict 与json的运用
    request各种请求的封装
    图片上传两种第三方库调用的封装函数
    JWT Token 生成与token的解析
    如何将windows文件传至linux
    windows 下python 环境安装
    shell的条件测试
    shell的数值运算
    shell基础认知
    cookie和代理
  • 原文地址:https://www.cnblogs.com/cdyboke/p/6565698.html
Copyright © 2011-2022 走看看