You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.0 KiB

1 year ago
package netProgram
import (
"log"
"net"
"sync"
"time"
)
// 客户端
func TcpClient() {
// tcp服务端地址
//serverAddress := "127.0.0.1:5678"
// tcp协议类型
serverAddress := "[::1]:5678" // IPv6
//serverAddress := "127.0.0.1:5678" // IPv4
// 模拟多客户端
// 并发的客户端请求
num := 10
wg := sync.WaitGroup{}
wg.Add(num)
for i := 0; i < num; i++ {
// 并发请求
go func(wg *sync.WaitGroup) {
defer wg.Done()
// A. 建立连接
conn, err := net.Dial(tcp, serverAddress)
if err != nil {
log.Println(err)
return
}
// 保证关闭
defer conn.Close()
log.Printf("connection is establish, client addr is %s\n", conn.LocalAddr())
}(&wg)
}
wg.Wait()
}
func TcpTimeoutClient() {
// tcp服务端地址
serverAddress := "192.168.110.123:5678" // IPv6 4
// 模拟多客户端
// 并发的客户端请求
num := 10
wg := sync.WaitGroup{}
wg.Add(num)
for i := 0; i < num; i++ {
// 并发请求
go func(wg *sync.WaitGroup) {
defer wg.Done()
// A. 建立连接
conn, err := net.DialTimeout(tcp, serverAddress, time.Second)
//conn, err := net.Dial(tcp, serverAddress)
if err != nil {
log.Println(err)
return
}
// 保证关闭
defer conn.Close()
log.Printf("connection is establish, client addr is %s\n", conn.LocalAddr())
}(&wg)
}
wg.Wait()
}
func TcpBacklogClient() {
// tcp服务端地址
serverAddress := "127.0.0.1:5678" // IPv6 4
// 模拟多客户端
// 并发的客户端请求
num := 256
wg := sync.WaitGroup{}
wg.Add(num)
for i := 0; i < num; i++ {
// 并发请求
go func(wg *sync.WaitGroup, no int) {
defer wg.Done()
// A. 建立连接
conn, err := net.DialTimeout(tcp, serverAddress, time.Second)
//conn, err := net.Dial(tcp, serverAddress)
if err != nil {
log.Println(err)
return
}
// 保证关闭
defer conn.Close()
log.Printf("%d: connection is establish, client addr is %s\n", no, conn.LocalAddr())
}(&wg, i)
time.Sleep(30 * time.Millisecond)
}
wg.Wait()
}