1. tcp server

package main

import (
"bufio"
"fmt"
"net"
) func main() {
// 1. 监听端口
listener, err := net.Listen("tcp", "127.0.0.1:8080")
if err != nil {
fmt.Println("listen fail err", err)
return
} defer listener.Close() for {
// 2. 接收客户端请求建立链接
conn, err := listener.Accept()
if err != nil {
fmt.Println("accept fail err", err)
continue
} // 3. 创建goroutine处理链接
go process(conn) }
} func process(conn net.Conn) {
defer fmt.Println("conn链接关闭了")
defer conn.Close() // 关闭链接 reader := bufio.NewReader(conn)
for {
var buf [4096]byte
n, err := reader.Read(buf[:]) // 读取数据
if err != nil {
break
}
recvStr := string(buf[:n])
fmt.Println("收到Client发来的数据:", recvStr)
recvStr = "serer" + recvStr
conn.Write([]byte(recvStr))
} }

  

2. tcp client

package main

import (
"bufio"
"fmt"
"net"
"os"
"strings"
) func main() {
// 建立与服务器的链接
conn, err := net.Dial("tcp", "127.0.0.1:8080")
if err != nil {
fmt.Println("Dial fail err", err)
return
} // 关闭链接
defer conn.Close() inputReader := bufio.NewReader(os.Stdin)
// 进行数据的收发
for {
input, _ := inputReader.ReadString('\n')
inputInfo := strings.Trim(input, "\r\n")
if strings.ToUpper(inputInfo) == "Q" { // 如果用户输入的是q/Q就退出
return
} // 发送数据
_, err := conn.Write([]byte(inputInfo))
if err != nil {
fmt.Println("Write fail err", err)
return
} // 接收数据
buf := [4096]byte{}
n, err := conn.Read(buf[:])
if err != nil {
fmt.Println("Read fail err", err)
return
}
fmt.Println("收到server发来的数据:", string(buf[:n])) } }

  

golang中的tcp编程的更多相关文章

  1. golang中的socket编程

    0.1.索引 https://waterflow.link/articles/1664591292871 1.tcp的3次握手(建立连接) 客户端的协议栈向服务器端发送了 SYN 包,并告诉服务器端当 ...

  2. python中的TCP编程学习

    今天看了一下关于python的TCP编程. 发现思路和其他语言(比如java)思路基本上差点儿相同. 先看client.基本过程例如以下: 第一步:创建一个socket 第二步:建立连接 第三步:发送 ...

  3. qt中的tcp编程

    server .server.h #define DIALOG_H #include <QDialog> #include <QTcpServer> #include < ...

  4. Python中的TCP编程,实现客户端与服务器的聊天(socket)

    参考大神blog:自己再写一个 https://blog.csdn.net/qq_31187881/article/details/79067644

  5. golang中的udp编程

    1. udp server package main import ( "fmt" "net" ) func main() { // udp server li ...

  6. C#网络程序设计(3)网络传输编程之TCP编程

        网络传输编程指基于各种网络协议进行编程,包括TCP编程,UDP编程,P2P编程.本节介绍TCP编程.     (1)TCP简介: TCP是TCP/IP体系中最重要的传输层协议,它提供全双工和可 ...

  7. 网游中的网络编程系列1:UDP vs. TCP

    原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...

  8. 用java网络编程中的TCP方式上传文本文件及出现的小问题

    自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文 ...

  9. golang中的RPC开发-2

    RPC简介 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 如果 ...

随机推荐

  1. vue 判断页面是否滚动到底部

    需求 要求用户阅读完本页所有内容后,下一步按钮才可以点击. 实现思路 通过判断当前页面是否到达底部来设置按钮的点击事件. 要判断当前页面是否到达底部需要用到三个距离--距离顶部的距离scrollTop ...

  2. 【剑指Offer】二叉树的下一个结点 解题报告(Python)

    [剑指Offer]二叉树的下一个结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  3. Linux Cgroups详解(一)

    [转载]http://blog.chinaunix.net/uid-23253303-id-3999432.html Cgroups是什么? Cgroups是control groups的缩写,是Li ...

  4. JVM垃圾收集器专题

    垃圾收集器:利用垃圾收集算法,实现垃圾回收的实践落地. 1 HotSpot垃圾回收器 HotSpot垃圾回收器有多个,可以配合使用. 1.1 垃圾回收的一些术语 术语: Stop the world ...

  5. 【MySQL作业】分组查询 group by 子句——美和易思分组查询应用习题

    点击打开所使用到的数据库>>> 1.按照商品类型分组统计商品数量和平均单价,并按平均单价升序显示. -- 按照商品类型分组统计商品数量和平均单价,并按平均单价升序显示: select ...

  6. windows下的Python的下载与安装

    Python的下载 Python下载要去官网下载,xdm,这里是网址 www.python.org 因为是外网所以打开下载会慢一些(不要着急的说) 这是python官网界面,跟着图片去下载(因为我这会 ...

  7. Java二、八、十、十六进制介绍

    1.说明 在Java中整数有四种表示方式, 分别为十进制,二进制,八进制,十六进制, 其中十进制就是平常最熟悉,使用最多的进制: 二进制是在计算机中使用最多的进制, 八进制和十六进制都是基于二进制的, ...

  8. Java如何打好牢固的基础?

    如果纯粹是为了学Java,那么不建议阅读本文,因为本文不是从理论和教科书的角度讲述如何打好java基础,而是会从"快速用java挣钱"这个角度,讲边学.边做项目和边提升的方法. 在 ...

  9. centos6.5-搭建Apache-地址限制和用户访问

    对于企业内部的WEB管理平台,例如日志分析系统(Awstats)为了更好实现访问控制,在通过客户端访问时,提交一些用户密码或对客户IP地址进行授权,避免服务器的安全隐患. 常见的访问控制方式:应用于配 ...

  10. VC 2010 Express 学生版(中文版)

    Microsoft Visual C++ 2010 Express 学生版 下载传送门(提取码:r7sm) 如何安装 拿到压缩文件后,解压到桌面(别怕,安装完后这个文件夹是可以删除的). 在 &quo ...