内容简介:完成!
服务器端
package main import ( "bufio" "fmt" "log" "net" "strings" "time" ) func main() { listenner,err:=net.Listen("tcp","localhost:8000") if err != nil { log.Fatal(err) } for{ conn,err:=listenner.Accept() if err != nil { log.Print(err) continue } handleConn(conn) } } func handleConn(c net.Conn){ input := bufio.NewScanner(c) for input.Scan(){ echo(c,input.Text(),1*time.Second) } } func echo(c net.Conn,shout string,delay time.Duration){ fmt.Fprintln(c,"\t",strings.ToUpper(shout)) time.Sleep(delay) fmt.Fprintln(c,"\t",shout) time.Sleep(delay) fmt.Fprintln(c,"\t",strings.ToLower(shout)) }
客户端
package main import ( "io" "log" "net" "os" ) func main() { conn,err := net.Dial("tcp","localhost:8000") if err != nil { log.Fatal(err) } defer conn.Close() go mustCopy(os.Stdout,conn) mustCopy(conn,os.Stdin) } func mustCopy(dst io.Writer, src io.Reader) { if _,err:=io.Copy(dst,src);err!=nil { log.Fatal(err) } }
工作原理
服务端向外提供以下服务
- 开启一个tcp服务器listenner
- tcp服务器监听请求产生连接conn ->for
-
使用外部函数处理conn ->for
外部处理函数工作流程 - 使用NewScanner(conn)获取input
- 循环执行echo()函数直到没有获取到新的input为止
客户端向服务端发送请求原理
- 开启一个客户端的连接conn
-
获取输入赋值给conn
*在另一个goroutine 将处理后的结果输出到客户端
完成!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Data Mining
Bing Liu / Springer / 2006-12-28 / USD 59.95
Web mining aims to discover useful information and knowledge from the Web hyperlink structure, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is n......一起来看看 《Web Data Mining》 这本书的介绍吧!