gotcpc/sserverclient学习笔记
server1:
package main
为和布克赛尔蒙古等地区用户提供了全套网页设计制作服务,及和布克赛尔蒙古网站建设行业解决方案。主营业务为网站建设、做网站、和布克赛尔蒙古网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
import (
"fmt"
"net"
)
func main() {
l, err := net.Listen("tcp", "127.0.0.1:9876")
if err != nil {
fmt.Println(err)
}
fmt.Println("服务器等待客户端连接")
conn, err := l.Accept()
if err != nil {
fmt.Println(err)
}
defer conn.Close()
fmt.Println("客户端建立连接 ")
buf := make([]byte, 4096)
n, err := conn.Read(buf)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(buf[:n]))
conn.Write(buf[:n])
}
client1:
package main
import (
"fmt"
"net"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:9876")
if err != nil {
fmt.Println(err)
}
defer conn.Close()
conn.Write([]byte("are you ready"))
buf := make([]byte, 4096)
n, err := conn.Read(buf)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(buf[:n]))
}
sever2:
package main
import (
"fmt"
"io"
"net"
"runtime"
"strings"
)
func process(conn net.Conn) {
// io.Copy(conn, conn)
buf := make([]byte, 4096)
for {
n, err := conn.Read(buf)
if err != nil {
if err == io.EOF {
fmt.Println("客户端断开连接")
runtime.Goexit()
} else {
fmt.Println(err)
runtime.Goexit()
}
//break
}
fmt.Println("接收到消息:", string(buf[:n]))
conn.Write([]byte(strings.ToUpper(string(buf[:n]))))
//fmt.Println(strings.ToUpper(string(buf[:n])))
}
}
func main() {
l, err := net.Listen("tcp", "127.0.0.1:9876")
if err != nil {
fmt.Println(err)
}
defer l.Close()
for {
conn, err := l.Accept()
if err != nil {
fmt.Println(err)
continue
}
defer conn.Close()
fmt.Println(conn.RemoteAddr())
go process(conn)
}
}
client2:
package main
import (
"bufio"
"fmt"
"net"
"os"
"strings"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:9876")
if err != nil {
fmt.Println(err)
}
defer conn.Close()
for {
//strs :=""
// fmt.Scanln(&strs) 空格有问题
//strs := make([]byte, 4096)
//n, err := os.Stdin.Read(strs)
fmt.Println("请输入要发送的消息:")
str, err := bufio.NewReader(os.Stdin).ReadString('\n')
if err != nil {
fmt.Println(err)
}
str = strings.TrimSpace(str)
//fmt.Println("发送前", , "展示")
//fmt.Println("a", str, "b")
if str == "Q" {
fmt.Println("接收到退出命令,退出客户端")
break
}
conn.Write([]byte(str))
buf := make([]byte, 4096)
n, err := conn.Read(buf)
if err != nil {
fmt.Println(err)
break
}
defer conn.Close()
fmt.Println("接收到消息:", string(buf[:n]))
}
}
网站名称:gotcpc/sserverclient学习笔记
分享链接:http://cdiso.cn/article/jdieoc.html