0号是保留端口
1-1024是固定端口(
22
:SSH远程连接;23
:telnet使用;21
:ftp使用;25
:smtp服务使用;80
:iis使用;7
:echo使用)
netstat -an
可以查看本机有哪些端口在监听netstat -anb
来查看监听端口的pid,再结合任务管理器关闭不安全的端口tcp是长期连接
//采用的包
package net
//0.0.0.0:8888:这样写IPV4和IPV6都支持
listen,err := net.Listen("tcp","127.0.0.1:8888")
if err != nil {
fmt.Printf("listen err=%v\n",err)
return
}
fmt.Printf("listen success = %v\n",listen)
Read()
,Write
,Close()
,LocalAddr()
,RemoteAddr()
用的特别多;
//循环等待客户端来连接
for{
//等待客户端来连接
fmt.Println("等待客户端连接...")
conn,err :=listen.Accept()
if err != nil {
fmt.Println("Accept() error")
}else {
fmt.Printf("Accept() success = %v\n",conn)
}
}
telnet www.bilibili,com 80
重启电脑
package main
import (
"fmt"
"net" //做网络socket开发时
)
func main(){
fmt.Println("服务器开始监听...")
//0.0.0.0:8888:这样写IPV4和IPV6都支持
listen,err := net.Listen("tcp","127.0.0.1:8888")
if err != nil {
fmt.Printf("listen err=%v\n",err)
return
}
fmt.Printf("listen success = %v\n",listen)
defer listen.Close()//延时关闭连接
//循环等待客户端来连接
for{
//等待客户端来连接
fmt.Println("等待客户端连接...")
conn,err :=listen.Accept()
if err != nil {
fmt.Println("Accept() error")
}else {
fmt.Printf("Accept() success = %v\n",conn)
}
}
//准备协程,为客户端
}
客户端
package main
import (
"fmt"
"net"
)
func Link(){
conn,err := net.Dial("tcp","127.0.0.1:8888")
if err != nil {
fmt.Println("connect error")
return
}
fmt.Printf("connect success = %v",conn)
}
func main(){
Link()
}
服务端
package main
import (
"fmt"
"net" //做网络socket开发时
)
func main(){
fmt.Println("服务器开始监听...")
//0.0.0.0:8888:这样写IPV4和IPV6都支持
listen,err := net.Listen("tcp","127.0.0.1:8888")
if err != nil {
fmt.Printf("listen err=%v\n",err)
return
}
fmt.Printf("listen success = %v\n",listen)
defer listen.Close()//延时关闭连接
//循环等待客户端来连接
for{
//等待客户端来连接
fmt.Println("等待客户端连接...")
conn,err :=listen.Accept()
if err != nil {
fmt.Println("Accept() error")
}else {
//查看客户端的ip地址
fmt.Printf("Accept() success = %v,客户端ip地址=%v\n",conn,conn.RemoteAddr())
}
}
}