golang网络编程学习-TCP

golang网络编程学习-TCP

网络编程主要的内容是:
1.TCP网络编程
2.http服务
3.rpc服务
4.websocket服务

 

golang网络编程学习-TCP

一、TCP/IP
TCP/IP是一种协议簇,它是网络通信的基础,是互联网的核心协议,负责数据在网络中的传输。它包括TCP和IP两个协议,TCP提供数据报传输的可靠性,IP则负责数据报传输的转发。
二、Go中的TCP编程
Go语言中的net包提供了TCP编程的相关API,主要包括以下几个函数:
net.DialTCP():创建一个TCP连接;
net.ListenTCP():监听一个TCP端口;
net.TCPConn():表示一个TCP连接。
下面我们将分别介绍如何使用这些函数进行TCP编程。
 

 一、server端

package main

import (
	"bufio"
	"fmt"
	"net"
)

func handleClient(conn *net.TCPConn) {
	defer conn.Close()

	//	读取客户端请求
	reader := bufio.NewReader(conn)
	req, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("接收到的请求是:", req)

	//发送响应数据

	writer := bufio.NewWriter(conn)
	resp := "Hello,client!\n"
	_, err = writer.WriteString(resp)
	if err != nil {
		fmt.Println(err)
		return
	}
	writer.Flush()

}

func main() {

	tcpListenner, err := net.ListenTCP("tcp", &net.TCPAddr{
		IP:   net.IPv4(0, 0, 0, 0),
		Port: 9999,
	})
	if err != nil {
		fmt.Println(err)
		return
	}
	defer tcpListenner.Close()

	fmt.Println("监听端口:", 9999)

	for {
		conn, err := tcpListenner.AcceptTCP()
		if err != nil {
			fmt.Println(err)
			continue
		}
		fmt.Println("新的客户端连接...")
		go handleClient(conn)

	}
}

二、客户端

package main

import (
	"bufio"
	"fmt"
	"net"
)

func main() {
	conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
		IP:   net.IPv4(127, 0, 0, 1),
		Port: 9999,
	})
	if err != nil {
		fmt.Println(err)
		return
	}

	defer conn.Close()

	//	发送数据请求
	writer := bufio.NewWriter(conn)
	req := "Hello,server!\n"
	_, err = writer.WriteString(req)
	if err != nil {
		fmt.Println(err)
		return
	}
	writer.Flush()

	//	接受响应数据
	reader := bufio.NewReader(conn)
	resp, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("接收到达额数据是", resp)
}

不过多的解释了,都是在注释里了

你可能感兴趣的:(golang30天,golang,学习,开发语言)