第8章,部分字词修订,语序调整。

This commit is contained in:
zhliner
2017-08-24 22:29:40 +08:00
parent 17919273e1
commit 69606d498b
11 changed files with 29 additions and 30 deletions

View File

@@ -49,7 +49,7 @@ Listen函数创建了一个net.Listener的对象这个对象会监听一个
handleConn函数会处理一个完整的客户端连接。在一个for死循环中用time.Now()获取当前时刻然后写到客户端。由于net.Conn实现了io.Writer接口我们可以直接向其写入内容。这个死循环会一直执行直到写入失败。最可能的原因是客户端主动断开连接。这种情况下handleConn函数会用defer调用关闭服务器侧的连接然后返回到主函数继续等待下一个连接请求。
time.Time.Format方法提供了一种格式化日期和时间信息的方式。它的参数是一个格式化模板标识如何来格式化时间而这个格式化模板限定为Mon Jan 2 03:04:05PM 2006 UTC-0700。有8个部分(周几,月份,一个月的第几天,等等)。可以以任意的形式来组合前面这个模板出现在模板中的部分会作为参考来对时间格式进行输出。在上面的例子中我们只用到了小时、分钟和秒。time包里定义了很多标准时间格式比如time.RFC1123。在进行格式化的逆向操作time.Parse时也会用到同样的策略。(译注这是go语言和其它语言相比比较奇葩的一个地方。。你需要记住格式化字符串是1月2日下午3点4分5秒零六年UTC-0700而不像其它语言那样Y-m-d H:i:s一样当然了这里可以用1234567的方式来记忆倒是也不麻烦)
time.Time.Format方法提供了一种格式化日期和时间信息的方式。它的参数是一个格式化模板标识如何来格式化时间而这个格式化模板限定为Mon Jan 2 03:04:05PM 2006 UTC-0700。有8个部分(周几,月份,一个月的第几天,等等)。可以以任意的形式来组合前面这个模板出现在模板中的部分会作为参考来对时间格式进行输出。在上面的例子中我们只用到了小时、分钟和秒。time包里定义了很多标准时间格式比如time.RFC1123。在进行格式化的逆向操作time.Parse时也会用到同样的策略。(译注这是go语言和其它语言相比比较奇葩的一个地方。。你需要记住格式化字符串是1月2日下午3点4分5秒零六年UTC-0700而不像其它语言那样Y-m-d H:i:s一样当然了这里可以用1234567的方式来记忆倒是也不麻烦)
为了连接例子里的服务器我们需要一个客户端程序比如netcat这个工具(nc命令),这个工具可以用来执行网络连接操作。
@@ -147,7 +147,7 @@ $ ./netcat1
$ killall clock2
```
**练习 8.1** 修改clock2来支持传入参数作为端口号然后写一个clockwall的程序这个程序可以同时与多个clock服务器通信从多服务器中读取时间并且在一个表格中一次显示所有服务传回的结果类似于你在某些办公室里看到的时钟墙。如果你有地理学上分布式的服务器可以用的话让这些服务器跑在不同的机器上面或者在同一台机器上跑多个不同的实例这些实例监听不同的端口假装自己在不同的时区。像下面这样
**练习 8.1** 修改clock2来支持传入参数作为端口号然后写一个clockwall的程序这个程序可以同时与多个clock服务器通信从多服务器中读取时间,并且在一个表格中一次显示所有服务传回的结果,类似于你在某些办公室里看到的时钟墙。如果你有地理学上分布式的服务器可以用的话,让这些服务器跑在不同的机器上面;或者在同一台机器上跑多个不同的实例,这些实例监听不同的端口,假装自己在不同的时区。像下面这样:
```
$ TZ=US/Eastern ./clock2 -port 8010 &
@@ -156,4 +156,4 @@ $ TZ=Europe/London ./clock2 -port 8030 &
$ clockwall NewYork=localhost:8010 Tokyo=localhost:8020 London=localhost:8030
```
**练习 8.2** 实现一个并发FTP服务器。服务器应该解析客户端来的一些命令比如cd命令来切换目录ls来列出目录内文件get和send来传输文件close来关闭连接。你可以用标准的ftp命令来作为客户端或者也可以自己实现一个。
**练习 8.2** 实现一个并发FTP服务器。服务器应该解析客户端来的一些命令比如cd命令来切换目录ls来列出目录内文件get和send来传输文件close来关闭连接。你可以用标准的ftp命令来作为客户端或者也可以自己实现一个。