zoukankan      html  css  js  c++  java
  • go socket simple

    1. socket_server.go

     1 package main
     2 
     3 import (
     4     "net"
     5 
     6     "facework.im/share/logging"
     7 )
     8 
     9 func main() {
    10     listen, err := net.Listen("tcp", "localhost:1024")
    11     if err != nil {
    12         logging.Error("Net Listen | %v", err)
    13         return
    14     }
    15     defer listen.Close()
    16 
    17     logging.Debug("Waiting For Clients To Connection...")
    18 
    19     for {
    20         conn, err := listen.Accept()
    21         if err != nil {
    22             logging.Debug("Liston Accept | %v", err)
    23             continue
    24         }
    25 
    26         logging.Notice("%v Tcp Connect Success.", conn.RemoteAddr().String())
    27 
    28         handleConnection(conn)
    29     }
    30 }
    31 
    32 // 处理连接
    33 func handleConnection(conn net.Conn) {
    34     buf := make([]byte, 2048)
    35 
    36     for {
    37         n, err := conn.Read(buf)
    38         if err != nil {
    39             return
    40         }
    41 
    42         logging.Debug("%v Receive Data: %v", conn.RemoteAddr().String(), string(buf[:n]))
    43     }
    44 }
    View Code

    2. socket_client.go

     1 package main
     2 
     3 import (
     4     "bufio"
     5     "net"
     6     "os"
     7 
     8     "facework.im/share/logging"
     9 )
    10 
    11 func main() {
    12     server := "127.0.0.1:1024"
    13     addr, err := net.ResolveTCPAddr("tcp4", server)
    14     if err != nil {
    15         logging.Error("Net ResolveTCPAddr | %v", err)
    16         return
    17     }
    18 
    19     conn, err := net.DialTCP("tcp", nil, addr)
    20     if err != nil {
    21         logging.Error("Net DialTCP | %v", err)
    22         return
    23     }
    24 
    25     logging.Notice("Connect To Server Success.")
    26 
    27     sender(conn)
    28 }
    29 
    30 // 发送消息
    31 func sender(conn net.Conn) {
    32     msgin := bufio.NewReader(os.Stdin)
    33     for {
    34         line, _, _ := msgin.ReadLine()
    35         msg := string(line)
    36         conn.Write([]byte(msg))
    37     }
    38 }
    View Code

    3. 运行效果

  • 相关阅读:
    Linux常用命令大全(非常全!!!)
    洛谷 P3379 【模板】最近公共祖先(LCA)
    POJ 3259 Wormholes
    POJ 1275 Cashier Employment
    POJ 3169 Layout
    POJ 1201 Intervals
    洛谷 P5960 【模板】差分约束算法
    洛谷 P3275 [SCOI2011]糖果
    POJ 2949 Word Rings
    POJ 3621 Sightseeing Cows
  • 原文地址:https://www.cnblogs.com/hezhixiong/p/7525180.html
Copyright © 2011-2022 走看看