golang网络编程学习-TCP

这篇具有很好参考价值的文章主要介绍了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)
}

不过多的解释了,都是在注释里了文章来源地址https://www.toymoban.com/news/detail-578183.html

到了这里,关于golang网络编程学习-TCP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习网络编程No.2【深入理解TCP/IP】

    北京时间:2023/8/9/13:04,昨天在摆烂中把网络基础相关知识的博客更新,依然还是上不了C站热榜,我估计是因为我账号热度不够没有上榜资格,也可能是因为前段时间没有积极更新,导致周榜被甩出100名开外,反正应该是因为更新文章不够积极导致现在怎样都上不了热榜,不

    2024年02月13日
    浏览(45)
  • 学习网络编程No.5【TCP套接字通信】

    北京时间:2023/8/25/15:52,昨天刚把耗时3天左右的文章更新,充分说明我们这几天并不是在摆烂中度过,而是在为了更文不懈奋斗,历时这么多天主要是因为该部分知识比较陌生,所以需要我们花费大量的时间去细细研究,为后面无论是TCP套接字,还是网络的学习都能更加融会

    2024年02月10日
    浏览(61)
  • Linux 网络编程学习笔记——一、TCP/IP 协议族

    数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(以太网、令牌环等)上的传输,不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。最常用的协议是 ARP(Address Resolve Protocol,地址解析协议)和 RARP(

    2024年02月02日
    浏览(74)
  • C++开发基础之网络编程WinSock库使用详解TCP/UDP Socket开发

    Winsock是Windows操作系统提供的用于网络编程的API库。它是Windows Sockets的简称,也就是套接字库。Winsock可以让开发人员使用TCP/IP协议族中的各种协议,如TCP、UDP等,在Windows平台下进行网络编程。 Winsock提供了一组函数和数据结构,这些函数和数据结构可以让开发人员创建和管理

    2024年01月23日
    浏览(51)
  • 嵌入式学习第二十六天!(网络传输:TCP编程)

            socket   -  connect  -  send  -  recv   -  close         socket   -  bind   -  listen   -  accept   - recv   -  send   -  close         1. connect:               功能: 发送链接请求               参数:                   sockfd: 套接字文件描述符                  

    2024年03月09日
    浏览(83)
  • lv7 嵌入式开发-网络编程开发 03 TCP/IP与五层体系结构

    目录 1 TCP/IP协议族体系结构 1.1 OSI与TCP/IP 1.2 TCP/IP 的体系结构  1.3 TCP/IP 体系结构的另一种表示方法 1.4 沙漏计时器形状的 TCP/IP 协议族 2 五层协议的体系结构 2.1 各层的主要功能  2.2 互联网中客户-服务器工作方式 2.3 同时为多个客户进程提供服务  3 练习 是事实上的国际标

    2024年02月07日
    浏览(68)
  • Java-Java基础学习(2)-网络编程-TCP-UDP

    2.1. 通信协议 TCP、UDP对比 TCP 打电话 连接,稳定 三次握手,四次挥手 客户端、服务端 传输完成,释放连接,效率低 UDP 发短信 不连接,不稳定 客户端,服务端,没有明确的界限 不管有没有准备好,都可以发给你 导弹 DDOS:洪水供给!(饱和攻击) 2.2. Tcp上传测试 总结:

    2024年04月09日
    浏览(47)
  • 「网络编程」传输层协议_ TCP协议学习_及原理深入理解(一)[万字详解]

    「前言」文章内容大致是传输层协议,TCP协议讲解,续上篇UDP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) TCP( Transmission Control Protoco l)是一种面向连接的、可靠的传输协议,TCP全称为 \\\"传输控制协议”,TCP人如其名,要对数据的传输进行一个

    2024年02月16日
    浏览(38)
  • 「网络编程」传输层协议_ TCP协议学习_及原理深入理解(二 - 完结)[万字详解]

    「前言」文章内容大致是传输层协议,TCP协议讲解的第二篇,续上篇TCP。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 首先明确,TCP是面向连接的,TCP通信之前需要先建立连接,就是因为 TCP的各种可靠性保证都是基于连接的,要保证传输数据的可靠性

    2024年02月15日
    浏览(44)
  • 30天拿下Rust之网络编程

    概述         在现代软件开发中,网络编程无处不在。无论是构建高性能的服务器、实时通信应用,还是实现复杂的分布式系统,对网络编程技术的掌握都至关重要。Rust语言以其卓越的安全性、高性能和优秀的并发模型,为网络编程提供了坚实的基础。 std::net       

    2024年04月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包