1、携程
package main
import "fmt"
import "time"
func showNum(argc int) {
for {
fmt.Println("hello")
time.Sleep(time.Second * 1)
}
}
func main() {
go showNum(666)
for {
fmt.Println("world")
time.Sleep(time.Second * 1)
}
}
2、go语言简单并发服务器
package main
import "fmt"
import "strings"
import "log"
import "bufio"
import "time"
import "net"
func echo(conn net.Conn, str string) {
str += "\n"
//将数据回显个客户端
conn.Write([]byte(strings.ToUpper(str)))
time.Sleep(time.Second * 2)
conn.Write([]byte(str))
time.Sleep(time.Second * 2)
conn.Write([]byte(strings.ToLower(str)))
}
//处理每个连接
func handleCon(conn net.Conn) {
defer conn.Close()
//扫描
myScaner := bufio.NewScanner(conn)
for myScaner.Scan() { //myScaner.Scan(),如果conn又数据过来,就返回真,否则反之
go echo(conn, myScaner.Text()) //myScanner.Text()是客户端传入的数据
}
}
func main() {
listen, err := net.Listen("tcp", ":8000")
if err != nil {
log.Fatal(err)
return
}
defer listen.Close()
for {
conn, err := listen.Accept()
if err != nil {
log.Fatal(err)
continue
}
fmt.Println("有conn连接")
//处理每个连接
go handleCon(conn)
}
}
3、简单客户端
package main
import _ "fmt"
import "net"
import "io"
import "os"
import "log"
func dealRescon(conn net.Conn) {
io.Copy(os.Stdout, conn)
}
func main() {
conn, err := net.Dial("tcp", ":8000")
if err != nil {
log.Fatal(err)
return
}
defer conn.Close()
go dealRescon(conn)
io.Copy(conn, os.Stdin)
}