From e955794c396ef4e247131d258082d89d73c2dfb3 Mon Sep 17 00:00:00 2001 From: xiemengjun Date: Tue, 9 Oct 2012 20:42:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 8.1.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/8.1.md b/8.1.md index e2ade331..da6082fc 100644 --- a/8.1.md +++ b/8.1.md @@ -150,9 +150,9 @@ Go语言中通过net包中的`DialTCP`函数来建立一个TCP连接,并返回 } } -上面的服务我们跑起来之后,他将会一直在那边等待,直到有新的客户端到达,当有新的客户端到达的时候他反馈当前的时间信息。同时我们注意看循环那里,当有错误发生时,直接continue了,而不是退出,因为在我们编写服务器端的时候,当有错误发生的情况下最好是记录错误,然后当前客户端出错直接退出,而不会影响到当前整个的服务。 +上面的服务跑起来之后,他将会一直等待在那里,直到有新的客户端到达,当有新的客户端到达的时候他反馈当前的时间信息。同时我们注意看循环那里,当有错误发生时,直接continue了,而不是退出,因为在我们编写服务器端的时候,当有错误发生的情况下最好是记录错误,然后当前客户端出错直接退出,而不会影响到当前整个的服务。 -当上面的代码执行的时候是单任务的,不能同时接收多个请求,那么我们如何改造一下就可以实现多并发呢?Go里面有一个goroutine机制,请看下面改造之后的代码 +上面的代码执行的时候是单任务的,不能同时接收多个请求,那么该如何改造以使它支持多并发呢?Go里面有一个goroutine机制,请看下面改造之后的代码 package main @@ -191,10 +191,10 @@ Go语言中通过net包中的`DialTCP`函数来建立一个TCP连接,并返回 } } -通过把业务独立到`handleClient`,我们就可以实现多并发执行了。看上去是不是很帅,简答的一行代码就实现了多并发的功能,这个也是Go吸引人的一个地方。 +通过把业务独立到`handleClient`,我们就可以实现多并发执行了。看上去是不是很帅,只改造了一行代码就实现了多并发,从这个小例子可以看出goroutine的强大之处。 ###控制TCP连接 -TCP连接有很多控制函数,我们平常用到比较多的有如下几个函数: +TCP有很多连接控制函数,我们平常用到比较多的有如下几个函数: func (c *TCPConn) SetTimeout(nsec int64) os.Error func (c *TCPConn) SetKeepAlive(keepalive bool) os.Error @@ -281,7 +281,8 @@ Go语言包中处理UDP Socket和TCP Socket不同的地方就是在处理服务 } } - +##总结 +通过上面对TCP Socket和UDP Socket的描述和实现来看,Go已经很完备的支持了Socket编程,而且使用起来相当的方便,提供了很多函数,通过这些函数可以很容易就编写出高性能的应用。 ## links * [目录]()