Skip to content

Instantly share code, notes, and snippets.

@xx19941215
Created October 24, 2018 06:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xx19941215/3f158b67b8d936b565514644f0211036 to your computer and use it in GitHub Desktop.
Save xx19941215/3f158b67b8d936b565514644f0211036 to your computer and use it in GitHub Desktop.
tcpdump抓本地回环地址的tcp包
sudo tcpdump -S -i lo0 -nnn tcp port 8888
@xx19941215
Copy link
Author

client.go

package main

import (
	"bufio"
	"fmt"
	"net"
	"os"
	"strings"
)

func main() {
	conn, err := net.Dial("tcp", "192.168.10.46:8888")
	if err != nil {
		fmt.Println("client dial err=", err)
		return
	}

	reader := bufio.NewReader(os.Stdin)

	for {
		line, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("readString err=", err)
		}

		line = strings.Trim(line, " \r\n")
		if line == "exit" {
			fmt.Println("客户端退出")
			break
		}

		_, err = conn.Write([]byte(line + "\n"))
		if err != nil {
			fmt.Println("conn.Write err=", err)
		}
	}
}

@xx19941215
Copy link
Author

server.go

package main

import (
	"fmt"
	_ "io"
	"net"
)

func main() {
	fmt.Println("服务器开始监听")
	listen, err := net.Listen("tcp", "0.0.0.0:8888")

	if err != nil {
		fmt.Println("listen err=", err)
		return
	}

	defer listen.Close()

	for {
		fmt.Println("等待客户端连接")
		conn, err := listen.Accept()
		if err != nil {
			fmt.Println("Accept() err=", err)
		} else {
			fmt.Printf("Accept suc con=%v 客户端ip为=%v\n", conn, conn.RemoteAddr().String())
		}

		go process(conn)

	}
}

func process(conn net.Conn) {
	defer conn.Close()

	for {
		buf := make([]byte, 1024)
		n, err := conn.Read(buf)
		if err != nil {
			fmt.Printf("客户端退出err=%v", err)
			return
		}

		fmt.Print(string(buf[:n]))
	}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment