Go语言网络通信---多用户连续通信的TCP编程
server端:
package main import (
"fmt"
"net"
) func main() {
//建立监听
listener, err := net.Listen("tcp", "localhost:8080")
if err != nil{
fmt.Println("建立tcp监听失败,err=",err)
return
} defer func() {
listener.Close()
fmt.Println("服务器已关闭")
}() fmt.Println("正在监听客户请求") for {
//循环接入一个客户端(获得专线连接Conn)
conn, _ := listener.Accept()
fmt.Println("成功接入客户端:",conn.RemoteAddr()) //将接入的客户端丢到并发协程中进行处理
go func() {
/*在一个独立的并发任务中与当前客户端IO*/
for {
//在专线连接中与特定的客户端IO
buffer := make([]byte, 1024)
n, _ := conn.Read(buffer)
msg := string(buffer[:n])
fmt.Printf("客户端%v:%s\n",conn.RemoteAddr(),msg) //回复消息
conn.Write([]byte("已阅消息:"+ msg)) //判断客户端是否想离婚
if msg == "exit"{
//断开与客户端的链接
conn.Close()
break
} }
}()
} }
client端:
package main import (
"fmt"
"net"
) func main() {
//使用udp协议拨号,远程地址127.0.0.1:8080
conn, _ := net.Dial("tcp", "127.0.0.1:8080") //程序退出前关闭连接,释放io资源
defer func() {
conn.Close()
fmt.Println("客户端已退出")
}() //创建接收消息的缓冲区
buffer := make([]byte, 1024)
//用户要发送的消息文本
var userInput string
for{
//接收用户输入
fmt.Print("大神请输入:")
fmt.Scan(&userInput)
//如果用户输入exit则退出 //客户端发起交谈
conn.Write([]byte(userInput)) //接收服务端消息
n, err := conn.Read(buffer)
fmt.Println(err)
fmt.Println("服务端:"+string(buffer[:n]))
if userInput == "exit"{
break
}
}
}
Go语言网络通信---多用户连续通信的TCP编程的更多相关文章
- Go语言网络通信---连续通信的UDP编程
Server: package main import ( "fmt" "net" ) func main() { //创建udp地址 udpAddr, _ : ...
- Go语言学习之9 网络协议TCP、Redis与聊天室
主要内容 1. Tcp编程2. redis使用 1. Tcp编程 (1)简介 Golang是谷歌设计开发的语言,在Golang的设计之初就把高并发的性能作为Golang的主要特性之一,也是 ...
- 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP
[源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...
- 36 - 网络编程-TCP编程
目录 1 概述 2 TCP/IP协议基础 3 TCP编程 3.1 通信流程 3.2 构建服务端 3.3 构建客户端 3.4 常用方法 3.4.1 makefile方法 3.5 socket交互 3.4 ...
- 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- C#网络程序设计(3)网络传输编程之TCP编程
网络传输编程指基于各种网络协议进行编程,包括TCP编程,UDP编程,P2P编程.本节介绍TCP编程. (1)TCP简介: TCP是TCP/IP体系中最重要的传输层协议,它提供全双工和可 ...
- 【Socket编程】通过Socket实现TCP编程
通过Socket实现TCP编程 Socket通信 : 1.TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 2.基于TCP协议实现网络通信的类: 客户端----Socket类 服务器 ...
- 网络编程之TCP编程
网络编程之TCP编程 前面已经介绍过关于TCP协议的东西,这里不做赘述.Java对于基于TCP协议的网络通信提供了良好的封装,Java使用socket对象来代表两端的通信窗口,并通过Socket产生I ...
- [Python] 网络编程之TCP编程
转自:TCP编程 - 廖雪峰的官方网站 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协 ...
随机推荐
- k8s helm 安装etcd
待续 helm install etcd bitnami/etcd \ --set statefulset.replicaCount=3 \ --set persistence.enabled=tru ...
- java 读取ini文件
1.情景:需要将硬代码写到文件中,这样以后改动只需改动灵活 1)txt文件,需要将这code字符串读到代码中,保存成数组 2)导包:pom.xml添加依赖: <dependency> &l ...
- NumPy之:结构化数组详解
目录 简介 结构化数组中的字段field 结构化数据类型 创建结构化数据类型 从元组创建 从逗号分割的dtype创建 从字典创建 操作结构化数据类型 Offsets 和Alignment Field ...
- POJ1042 贪心钓鱼
题意: 你有H小时(H*12个单位)时间去用,有n个鱼池在一条直线上,一开始你在1的位置,可以选择在某些鱼池上钓鱼,但是如果持续在一个鱼池上钓鱼钓鱼速度回成线性减少,初始每个时间单位钓fi ...
- 针对缓冲区保护技术(ASLR)的一次初探
0x01 前言 ASLR 是一种针对缓冲区溢出的安全保护技术,通过对堆.栈.共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一 ...
- 续订Jetbrain学生包
今天打开IDEA和Pycharm都不约而同的告诉我我的账号无法使用学生包了 此刻我的内心是: 冷静下来我算了算,嗷,原来是一年的订阅期到了,那就简单了,直接续订吧,唉.其实续订和重新认证是一样的. 首 ...
- 三、postman持久化及批量运行
一.设置环境变量 环境变量的引用为{{变量名}},运行脚本之前切记要在右上角选择对应脚本设置的环境变量后点击保存 二.设置全局变量 三.脚本导入导出及分享 1.导入脚本 2.导出脚本 3.分享脚本 四 ...
- Postman中如何实现接口之间的关联?
Postman中如何实现接口之间的关联? 不单单说Postman中,我为什么拿Postman举例,因为它比较简单一点. 那如果我只问你如何实现接口之间的关联,那肯定有很多的方式,Postman只是其中 ...
- Unity shader 护盾shield的简单实现
先上效果图 shader所用的贴图资源 扰动 直接对uv进行变换就可以了,记得首先把六边形格子地图的Tilling调高点 先预先调成合适大小的六边形,然后repeat铺满整个护盾 // Tiles a ...
- JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理
相关 JEP: JEP 353 Reimplement the Legacy Socket API JEP 373 Reimplement the Legacy DatagramSocket API ...