serverTcp.go
服务器端程序 运行: $go run serverTcp.go 启动服务器开始监听默认8080端口
客户端程序 运行: $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()
}
}