Goland Socket 服务
客户端发送消息 并接收服务端消息
package main
import (
"fmt"
"net"
)
func main() {
//
conn, err := net.Dial(`tcp`, ":8848")
if err != nil {
fmt.Println(`net dial err:`, err)
return
}
fmt.Println(`cline 与server 建立连接成功`)
sendData := []byte(`hellword`)
// 向服务器发送数据
cnt, err := conn.Write(sendData)
if err != nil {
fmt.Println(`conn.write err:`, err)
return
}
fmt.Println(`Client ==> Server cnt:`, cnt, "data:", string(sendData))
//接受服务器返回数据
buf := make([]byte, 1024)
cnt, err = conn.Read(buf)
if err != nil {
fmt.Println(`conn read err :`, err)
return
}
fmt.Println("Client <=== Server ,cnt:", cnt, "data", string(buf[0:cnt]))
}
单个服务监听
package main
import (
"fmt"
"net"
"strings"
)
func main() {
ip := "127.0.01"
port := 8848
// 创建监听
address := fmt.Sprintf(`%s:%d`, ip, port)
listener, err := net.Listen(`tcp`, address)
if err != nil {
fmt.Println(`net.listen err :`, err)
return
}
fmt.Println(`监听中`)
conn, err := listener.Accept()
if err != nil {
fmt.Println(`listener.Accept err:`, err)
return
}
fmt.Println(`建立连接成功`)
//创建容器 接受读取到到数据
buf := make([]byte, 1024)
cnr, err := conn.Read(buf)
if err != nil {
fmt.Println(`cnr err:`, err)
return
}
fmt.Println(`Client ==> Server,长度`, cnr, "数据:", string(buf[0:cnr]))
//将数据转换成大写
upperData := strings.ToUpper(string(buf))
cnr, err = conn.Write([]byte(upperData))
fmt.Println(`Clinet <====Server,长度`, cnr, "数据:", upperData)
// 关闭
conn.Close()
}
多个socket 服务端监听
package main
import (
"fmt"
"net"
"strings"
)
// socket servers 多个连接
func main() {
ip := "127.0.01"
port := 8848
// 创建监听
address := fmt.Sprintf(`%s:%d`, ip, port)
listener, err := net.Listen(`tcp`, address)
if err != nil {
fmt.Println(`net.listen err :`, err)
return
}
for {
fmt.Println(`监听中`)
conn, err := listener.Accept()
if err != nil {
fmt.Println(`listener.Accept err:`, err)
return
}
fmt.Println(`建立连接成功`)
go handleFunc(conn)
}
}
func handleFunc(conn net.Conn) {
//创建容器 接受读取到到数据
buf := make([]byte, 1024)
cnr, err := conn.Read(buf)
if err != nil {
fmt.Println(`cnr err:`, err)
return
}
fmt.Println(`Client ==> Server,长度`, cnr, "数据:", string(buf[0:cnr]))
//将数据转换成大写
upperData := strings.ToUpper(string(buf))
cnr, err = conn.Write([]byte(upperData))
fmt.Println(`Clinet <====Server,长度`, cnr, "数据:", upperData)
// 关闭
_ = conn.Close()
}
Goland Socket 服务的更多相关文章
- 交通银行 Java Socket 服务启动 管理 WINDOWS 版
按照交通银行提供的无界面启动方法试验了很多次,都没有成功,所以自己动手用C# 知识写了一个. 小工具可以判断 交通银行 JAVA SOCKET 服务是否启动,并可以启动/关闭服务 主要代码如下: 判断 ...
- MeepoPS——轻量级 Socket 服务
MeepoPS是Meepo PHP Socket的缩写.旨在提供高效稳定的由纯PHP开发的多进程SocketService. MeepoPS可以轻松构建在线实时聊天,即时游戏,视频流媒体播放,RPC, ...
- 【原】用PHP搭建基于swoole扩展的socket服务(附PHP扩展的安装步骤及Linux/shell在线手册)
最近公司的一项目中,需要用PHP搭建一个socket服务. 本来PHP是不适合做服务的,因为和第三方合作,需要采用高效而稳定的TCP协议进行数据通信.经过多次尝试,最终选择了开源的PHP扩展:swoo ...
- 在python中编写socket服务端模块(二):使用poll或epoll
在linux上编写socket服务端程序一般可以用select.poll.epoll三种方式,本文主要介绍使用poll和epoll编写socket服务端模块. 使用poll方式的服务器端程序代码: i ...
- Java的socket服务UDP协议
练习1 接收类 package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import ...
- NET Socket服务编程
smark https://github.com/IKende/ .NET Socket服务编程之-高效连接接入编 在.NET上编写网络服务深入都有2,3年了,而这些时间时如何在.NET里实现网络服务 ...
- AutoCAD.net支持后台线程-Socket服务端
最近因为公司项目的需求,CAD作为服务端在服务器中常驻运行,等待客户端远程发送执行任务的指令,最终确认用Socket-tcp通讯,CAD需要实时监听客户端发送的消息,这时就需要开启线程执行Socket ...
- GPS服务端(上)-Socket服务端(golang)
从第一次写GPS的服务端到现在,已经过去了八年时光.一直是用.net修修改改,从自己写的socket服务,到suppersocket,都是勉强在坚持着,没有真正的稳定过. 最近一段时间,服务端又出了两 ...
- 基于netty的socket服务端触发了channelInactive方法,但实际连接没有断开的问题
背景: 一个中小型H5游戏,后端使用基于 netty 的socket服务 服务端 分为 分发服务器 & 业务服务器,业务服务器可负载 用户客户端与分发服务器连接 分发服务器再作为客户端与每台业 ...
随机推荐
- 使用python3.7和opencv4.1来实现人脸识别和人脸特征比对以及模型训练
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_126 OpenCV4.1已经发布将近一年了,其人脸识别速度和性能有了一定的提高,这里我们使用opencv来做一个实时活体面部识别的 ...
- Javascript 正则使用笔记
# 一.如何创建正则表达式对象 # 1.通过RegExp构造函数来创建.i代表忽略大小写,g代表全局搜索(非全局搜索正则只匹配第一次符合的内容,全局搜索可以匹配多次). var reg = new R ...
- SAM复杂度证明
关于$SAM$的复杂度证明(大部分是对博客的我自己的理解和看法) 这部分是我的回忆,可省略 先回忆一下$SAM$ 我所理解的$SAM$,首先扒一张图 初始串$aabbabd$ 首先发现,下图里的$S- ...
- Excel 逻辑函数(一):IF 和 IFS
IF IF 函数有三个参数,第一个为条件判断,第二个是当条件为真时执行的表达式,第三个是条件为假时执行的表达式. IF(A1="是", A2 * 0.8, 0),如果 A1 单元格 ...
- 从零开始实现一个MyBatis加解密插件
作者:vivo 互联网服务器团队- Li Gang 本篇文章介绍使用MyBatis插件来实现数据库字段加解密的过程. 一.需求背景 公司出于安全合规的考虑,需要对明文存储在数据库中的部分字段进行加密, ...
- linux --stdin 管道 标准输入重定向
linux --stdin 标准输入重定向 --stdin This option is used to indicate that passwd should read the new passwo ...
- [CISCN2019 华北赛区 Day1 Web2]ikun-1
考点:JWT身份伪造.python pickle反序列化.逻辑漏洞 1.打开之后首页界面直接看到了提示信息,信息如下: 2.那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看下一 ...
- 前端Long类型丢失精度问题
有时候后端向前端传输Long类型,数字过长会出现丢失精度的问题 比如后端传来的是这样一个长数字串 那么前端的弹窗显示的是 ![](https://img2022.cnblogs.com/blog/22 ...
- Windows平台Unity3d播放多路RTMP或RTSP流
好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...
- The 19th Zhejiang Provincial Collegiate Programming Contest
目录 A.JB Loves Math B.JB Loves Comma C. JB Wants to Earn Big Money G. Easy Glide I. Barbecue L. Candy ...