摘要: Lookup所有相关的函数全在net包下的doc.go中LookupHost(host string) (addrs []string, err error)对某个主机名执行DNS查询,返回主机名,注意返回的是字符窜slice.可能有多个IP地址 addr, _ := net.LookupHost("www.baidu.com") fmt.Println(addr) // [220.181.112.143 220.181.111.148] LookupIP(host string) (addrs []IP, err error)同上,不过返回的是IP类型的sliceLook 阅读全文
posted @ 2013-04-18 15:03 zhepama 阅读(1078) 评论(0) 推荐(0) 编辑
摘要: 今为止我们已经区分TCP和UDP API的不同,使用例子DialTCP和DialUDP分别返回一个TCPConn和 UDPConn。Conn类型是一个接口,TCPConn和UDPConn实现了该接口。在很大程度上,你可以通过该接口处理而不是用这两种类型。Dial(network, address string) (Conn, error)net可以是"tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only), "udp", "udp4" (IPv4-only), 阅读全文
posted @ 2013-04-18 15:02 zhepama 阅读(6981) 评论(0) 推荐(0) 编辑
摘要: TCP和UDP并不是建立在IP层之上唯一的协议。该网站:http://www.iana.org/assignments/protocol-numbers 列表上大约有140关于它们(该列表往往在Unix系统的/etc/protocols文件上。)。TCP和UDP在这个名单上分别为6和17。Go允许你建立所谓的原始套接字,使您可以使用这些其它协议通信,或甚至建立你自己的。但它提供了最低限度的支持: 它会连接主机, 写入和读取和主机之间的数据包。在接下来的章节中,我们将着眼于设计和实现自己的基于TCP之上的协议; 这部分认为同样的问题存在于IP层。为了简单起见,我们将使用几乎最简单的例子: 如何发 阅读全文
posted @ 2013-04-18 15:01 zhepama 阅读(927) 评论(1) 推荐(0) 编辑
摘要: 处理TCP和UDP之间的主要区别是如何处理多个客户端可能同时有数据包到达,没有一个管理TCP会话的缓冲。主要需要调用的是func ResolveUDPAddr(net, addr string) (*UDPAddr, os.Error)func DialUDP(net string, laddr, raddr *UDPAddr) (c *UDPConn, err os.Error)func ListenUDP(net string, laddr *UDPAddr) (c *UDPConn, err os.Error)func (c *UDPConn) ReadFromUDP(b []byte) 阅读全文
posted @ 2013-04-18 15:00 zhepama 阅读(1627) 评论(0) 推荐(0) 编辑
摘要: FD file descriptor 文件信息netFD 实现了各个系统对socket的封装conn该结构实现了Conn接口type conn struct { fd *netFD}conn的方法Read(b []byte) (n int, err error)从连接中读取所有内容 result, err := ioutil.ReadAll(conn) //读取所有内容 //读取指定长度的内容 var buf [512]byte n, err := conn.Read(buf[0:]) //不断的从连接读取.. result := bytes.NewBuffer... 阅读全文
posted @ 2013-04-18 14:59 zhepama 阅读(4956) 评论(0) 推荐(0) 编辑