/**
* Created by Administrator on 13-12-9.
*/
package main
import (
"fmt"
"os"
"net"
)
/**
* 将string类型的ip地址转换为IP对象
*/
func main() {
name := "192.168.1.97"
ip := net.ParseIP(name)
if ip == nil {
fmt.Fprintf(os.Stderr, "Err:无效的地址" )
return
}
fmt.Fprintf(os.Stdout, "IP: %s %s\n" , ip, ip.String())
defaultMask := ip.DefaultMask()
fmt.Fprintf(os.Stdout, "DefaultMask: %s %s\n" , defaultMask, defaultMask.String())
ones, bits := defaultMask.Size()
fmt.Fprintf(os.Stdout, "ones: %d bits: %d\n" , ones, bits)
}
/**
* Created by Administrator on 13-12-9.
*/
package main
import (
"net"
"fmt"
"os"
)
/**
* 根据IP和掩码获得网络
*/
func main() {
name := "192.168.1.97"
ip := net.ParseIP(name)
mask := ip.DefaultMask()
network := ip.Mask(mask)
fmt.Fprintf(os.Stdout, "network: %s" , network.String())
}
/**
* Created by Administrator on 13-12-9.
*/
package main
import (
"net"
"fmt"
"os"
)
/**
* 将域名解析Ip地址
* 获得域名对应的所有Ip地址
*/
func main() {
domain := "www.baidu.com"
ipAddr, err := net.ResolveIPAddr("ip" , domain)
if err != nil {
fmt.Fprintf(os.Stderr, "Err: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "%s IP: %s Network: %s Zone: %s\n" , ipAddr.String(), ipAddr.IP, ipAddr.Network(), ipAddr.Zone)
ns, err := net.LookupHost(domain)
if err != nil {
fmt.Fprintf(os.Stderr, "Err: %s" , err.Error())
return
}
for _, n := range ns {
fmt.Fprintf(os.Stdout, "%s" , n)
}
}
/**
* Created by Administrator on 13-12-9.
*/
package main
import (
"net"
"fmt"
"os"
)
/**
* 查看主机服务器(service)占用的端口,这些服务,都是tcp或者udp的
*/
func main() {
port, err := net.LookupPort("tcp" , "telnet" )
if err != nil {
fmt.Fprintf(os.Stderr, "未找到指定服务" )
return
}
fmt.Fprintf(os.Stdout, "telnet port: %d" , port)
}
/**
* Created by Administrator on 13-12-9.
*/
package main
import (
"net"
"fmt"
"os"
)
func main() {
pTCPAddr, err := net.ResolveTCPAddr("tcp" , "www.baidu.com:80" )
if err != nil {
fmt.Fprintf(os.Stderr, "Err: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "www.baidu.com:80 IP: %s PORT: %d" , pTCPAddr.IP.String(), pTCPAddr.Port)
}
package main
import (
"net"
"fmt"
"os"
"io/ioutil"
)
func main() {
url := "www.baidu.com:80"
pRemoteTCPAddr, err := net.ResolveTCPAddr ("tcp4" , url)
if err != nil {
fmt.Fprintf (os.Stderr , "Error: %s" , err.Error ())
return
}
// pLocalTCPAddr, err := net.ResolveTCPAddr ("tcp" , "127.0.0.1:7070" )
pTCPConn, err := net.DialTCP ("tcp" , nil, pRemoteTCPAddr)
if err != nil {
fmt.Fprintf (os.Stderr , "Error: %s" , err.Error ())
return
}
n, err := pTCPConn.Write ([]byte("HEAD / HTTP/1.0\r\n\r\n" ))
if err != nil {
fmt.Fprintf (os.Stderr , "Error: %s" , err.Error ())
return
}
defer pTCPConn.Close ()
fmt.Fprintf (os.Stdout , "writed: %d\n" , n)
buf, err := ioutil.ReadAll (pTCPConn)
r := len(buf)
fmt.Fprintf (os.Stdout , string(buf[:r]))
fmt.Fprintf (os.Stdout , "readed: %d\n" , r)
}
/**
* Created by Administrator on 13 -12 -10.
*/
package main
import (
"net"
"fmt"
"os"
"time"
)
func main() {
pTCPAddr, error := net.ResolveTCPAddr("tcp4" , ":7070" )
if error != nil {
fmt.Fprintf(os .Stdout, "Error: %s" , error .Error())
return
}
pTCPListener, error := net.ListenTCP("tcp4" , pTCPAddr)
if error != nil {
fmt.Fprintf(os .Stdout, "Error: %s" , error .Error())
return
}
defer pTCPListener.Close()
for {
pTCPConn, error := pTCPListener.AcceptTCP()
if error != nil {
fmt.Fprintf(os .Stdout, "Error: %s" , error .Error())
continue
}
go connHandler(pTCPConn)
}
}
func connHandler(conn *net.TCPConn) {
defer conn.Close()
now := time.Now()
conn.Write([]byte(now.String() + "\n" ))
}
/**
* Created by Administrator on 13 -12 -10.
*/
package main
import (
"net"
"fmt"
"os"
"time"
)
func main() {
//url := "baidu.com:80"
url := "facebook.com:80"
conn, error := net.DialTimeout("tcp" , url, time.Second * 10 ) // 带有超时限制的conn
if error != nil {
fmt.Fprintf(os .Stderr, "Error: %s" , error .Error())
return
}
n , error := conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n" ))
if error != nil {
fmt.Fprintf(os .Stderr, "Error: %s" , error .Error())
return
}
fmt.Fprintf(os .Stdout, "writed: %d" , n)
buf := make([]byte, 2048 )
n, error = conn.Read(buf)
if error != nil {
fmt.Fprintf(os .Stderr, "Error: %s" , error .Error())
return
}
fmt.Fprintf(os .Stdout, string (buf[:n]))
}
/**
* Created by Administrator on 13-12-10.
*/
package main
import (
"net"
"fmt"
"os"
)
/**
* UDP 服务器
*/
func main() {
pUDPAddr, err := net.ResolveUDPAddr("udp" , ":7070" )
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
pUDPConn, err := net.ListenUDP("udp" , pUDPAddr)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
defer pUDPConn.Close()
for {
buf := make([]byte , 256 )
n , pUDPAddr, err := pUDPConn.ReadFromUDP(buf)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "readed: %d" , n)
n, err = pUDPConn.WriteToUDP(buf, pUDPAddr)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "writed: %d" , n)
}
}
/**
* Created by Administrator on 13-12-10.
*/
package main
import (
"net"
"fmt"
"os"
)
/**
* UDP 客户端
*/
func main() {
pUDPAddr, err := net.ResolveUDPAddr("udp" , "127.0.0.1:7070" )
if err != nil {
fmt.Fprintf(os.Stderr, "Error ResolveUDPAddr: %s" , err.Error())
return
}
pUDPConn, err := net.DialUDP("udp" , nil, pUDPAddr)
if err != nil {
fmt.Fprintf(os.Stderr, "Error DialUDP: %s" , err.Error())
return
}
n, err := pUDPConn.Write([]byte ("你好啊!!!" ))
if err != nil {
fmt.Fprintf(os.Stderr, "Error WriteToUDP: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "writed: %d" , n)
buf := make([]byte , 1024 )
n, _, err = pUDPConn.ReadFromUDP(buf)
if err != nil {
fmt.Fprintf(os.Stderr, "Error ReadFromUDP: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "readed: %d %s" , n, string(buf[:n]))
}
/**
* Created by Administrator on 13-12-10.
*/
package main
import (
"net"
"fmt"
"os"
)
func main() {
lsr, err := net.Listen("tcp" , ":7070" )
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
for {
conn , err := lsr.Accept()
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
continue
}
go connHandler(conn)
}
fmt.Println("Done !" )
}
func connHandler(conn net.Conn) {
defer conn.Close()
var buf[512 ]byte
for {
n , err := conn.Read(buf[0 :])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
_, err = conn.Write(buf[0 :n])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
}
}
/**
* Created by Administrator on 13-12-10.
*/
package main
import (
"net"
"fmt"
"os"
"bufio"
)
func main() {
conn, err := net.Dial("tcp" , "192.168.1.97:7070" )
if err != nil {
fmt.Sprint(os.Stderr, "Error: %s" , err.Error())
return
}
go func() {
var buf [512 ]byte
for {
n , err := conn.Read(buf[0 :])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, string(buf[0 :n]))
}
}()
for {
fmt.Fprintf(os.Stdout, "\n输入:" )
pReader := bufio.NewReader(os.Stdin)
line, _, err := pReader.ReadLine()
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s" , err.Error())
return
}
conn.Write(line[0 :])
}
}
/**
* Created by Administrator on 13-12-10.
*/
package main
import (
"net"
"fmt"
"os"
)
/**
UDP Server
*/
func main() {
packetConn, err := net.ListenPacket("udp" , ":7070" )
if err != nil {
fmt.Fprintf(os.Stdout, "Error: %s" , err.Error())
return
}
defer packetConn.Close()
var buf [512 ]byte
for {
n , addr, err := packetConn.ReadFrom(buf[0 :])
if err != nil {
fmt.Fprintf(os.Stdout, "Error: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "recv: %s" , string(buf[0 :n]))
_, err = packetConn.WriteTo(buf[0 :n], addr)
if err != nil {
fmt.Fprintf(os.Stdout, "Error: %s" , err.Error())
return
}
}
}
/**
* Created by Administrator on 13-12-10.
*/
package main
import (
"net"
"fmt"
"os"
"time"
)
/**
UDP Client
*/
func main() {
conn, err := net.Dial("udp" , "127.0.0.1:7070" )
if err != nil {
fmt.Fprintf(os.Stdout, "Error: %s" , err.Error())
return
}
defer conn.Close()
_, err = conn.Write([]byte ("你好啊UDP" ))
if err != nil {
fmt.Fprintf(os.Stdout, "Error: %s" , err.Error())
return
}
var buf [512 ]byte
conn.SetReadDeadline(time.Now().Add(time.Second * 1 ))
n, err := conn.Read(buf[0 :])
if err != nil {
fmt.Fprintf(os.Stdout, "Error: %s" , err.Error())
return
}
fmt.Fprintf(os.Stdout, "recv: %s" , string(buf[0 :n]))
}
转自:http://blog.csdn.net/eclipser1987/article/details/17247519?hmsr=studygolang.com&utm_medium=studygolang.com&utm_source=studygolang.com