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服务 服务端 分为 分发服务器 & 业务服务器,业务服务器可负载 用户客户端与分发服务器连接 分发服务器再作为客户端与每台业 ...
随机推荐
- c语言中的gets和fgets的使用差别
gets和fgets的差别 2022年6月30日 #include<stdio.h> #include<string.h> #define STLEN 8 int main(i ...
- Kettle需求场景复现
前置说明 遍历文件夹下的文件,读取所有的sheet页(指定的sheet)落库 读取execl文件和csv文件,获得文件中sheet/csv数据,进行落库,并增加字段实现更新: 如果execl中存在两个 ...
- Apache Hudi vs Delta Lake:透明TPC-DS Lakehouse性能基准
1. 介绍 最近几周,人们对比较 Hudi.Delta 和 Iceberg 的表现越来越感兴趣. 我们认为社区应该得到更透明和可重复的分析. 我们想就如何执行和呈现这些基准.它们带来什么价值以及我们应 ...
- 最新豆瓣top250爬虫案例代码分析[注释齐全]
导入包 # json包 import json #正则表达式包 import re import requests from requests import RequestException 定义爬取 ...
- Android 自定义View - 柱状波形图 wave view
前言 柱状波形图是一种常见的图形.一个个柱子按顺序排列,构成一个波形图. 柱子的高度由输入数据决定.如果输入的是音频的音量,则可得到一个声波图. 在一些音频软件中,我们也可以左右拖动声波,来改变音频的 ...
- 爬虫简介与excel表格操作
爬虫简介与excel表格操作 re模块简介 1.在python中使用正则表达式的话那么re模块就是选择之一 import re # 导入re模块 2.在re模块中使用findall找到所有我们给他的值 ...
- “判断性别”Demo需求分析和初步设计(中)
大家好~我开设了"深度学习基础班"的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序 线上课程资料: 本节课录像回放 加QQ群,获得 ...
- Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)
1.生命周期 **Spring容器的 bean **的生命周期: 1.1 默认生命周期 1.1.1 生命周期 调用构造方法,创建实例对象: set方法,给实例对象赋值: init 初始化方法 初始化对 ...
- 可别小看了XSS漏洞
可别小看了XSS漏洞 对于初了解xss漏洞的人来说,XSS漏洞的危害就是获取受害者的cookie,来进行 'cookie劫持'. 今天就总结一下XSS漏洞的危害性,望安全人员不要轻视,开发人员 ...
- 什么?MySQL 8.0 会同时修改两个ib_logfilesN 文件?
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 作者介绍:孙黎,GreatDB 认证DBA 问题现象 ...