Go语言的TCP实例

本文介绍了一个使用Go语言实现的简单TCP服务器和客户端程序。服务器监听8080端口,并响应客户端的连接请求,发送消息后关闭连接。客户端尝试连接服务器并接收服务器的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

serverTcp.go

服务器端程序 运行: $go run serverTcp.go 启动服务器开始监听默认8080端口

clientTcp.go

客户端程序 运行: $go run clientTcp.go 启动客户端请求连接


服务器端serverTcp.go:
package main

import (
        "net"
        "fmt"
        "os"
        "time"
)

func checkError(err error){
          if err != nil {
              fmt.Fprintf(os.Stderr,"Fatal error: %s",err.Error())
              os.Exit(1)
          }
  }

func handleConnection(conn net.Conn,i int){
            fmt.Println("connect succeed! ID: ",i)
            i += 1
            time.Sleep(1* time.Millisecond)
             _,_ = conn.Write([]byte("message from server\r\n\r\n"))
            time.Sleep(1* time.Millisecond)
            conn.Close()
}
func main() {
        i := 0
        ln,err := net.Listen("tcp",":8080")
        checkError(err)

        for {
            conn,err := ln.Accept()
            if err != nil {
                  fmt.Fprintf(os.Stderr,"Fatal error: %s",err.Error())
                  continue
            }
            i += 1
            go handleConnection(conn,i)
        }
}
客户端clientTcp.go:
package main

import (
        "fmt"
        "os"
        "net"
        "time"
        "io"
)
func checkError(err error){
         if err != nil {
             fmt.Fprintf(os.Stderr,"Fatal error: %s",err.Error())
             os.Exit(1)
         }
 }

func main() {
        for  i:=0 ;i <100 ;i++{
        conn,err := net.Dial("tcp","127.0.0.1:8080")
        checkError(err)

        fmt.Println("connect succeed! ID:",i+1)
        var buf [512]byte
            for {
                _,err := conn.Read(buf[0:])
                if err != nil {
                    if err == io.EOF {
                        break
                    }
                }
            }
         fmt.Println(string(buf[:]))
         time.Sleep(1* time.Millisecond)
        conn.Close()
        }
}

转载于:https://my.oschina.net/vincent67/blog/168306

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值