客户端发送消息 并接收服务端消息

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 服务的更多相关文章

  1. 交通银行 Java Socket 服务启动 管理 WINDOWS 版

    按照交通银行提供的无界面启动方法试验了很多次,都没有成功,所以自己动手用C# 知识写了一个. 小工具可以判断 交通银行 JAVA SOCKET 服务是否启动,并可以启动/关闭服务 主要代码如下: 判断 ...

  2. MeepoPS——轻量级 Socket 服务

    MeepoPS是Meepo PHP Socket的缩写.旨在提供高效稳定的由纯PHP开发的多进程SocketService. MeepoPS可以轻松构建在线实时聊天,即时游戏,视频流媒体播放,RPC, ...

  3. 【原】用PHP搭建基于swoole扩展的socket服务(附PHP扩展的安装步骤及Linux/shell在线手册)

    最近公司的一项目中,需要用PHP搭建一个socket服务. 本来PHP是不适合做服务的,因为和第三方合作,需要采用高效而稳定的TCP协议进行数据通信.经过多次尝试,最终选择了开源的PHP扩展:swoo ...

  4. 在python中编写socket服务端模块(二):使用poll或epoll

    在linux上编写socket服务端程序一般可以用select.poll.epoll三种方式,本文主要介绍使用poll和epoll编写socket服务端模块. 使用poll方式的服务器端程序代码: i ...

  5. Java的socket服务UDP协议

    练习1 接收类 package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import ...

  6. NET Socket服务编程

    smark https://github.com/IKende/ .NET Socket服务编程之-高效连接接入编 在.NET上编写网络服务深入都有2,3年了,而这些时间时如何在.NET里实现网络服务 ...

  7. AutoCAD.net支持后台线程-Socket服务端

    最近因为公司项目的需求,CAD作为服务端在服务器中常驻运行,等待客户端远程发送执行任务的指令,最终确认用Socket-tcp通讯,CAD需要实时监听客户端发送的消息,这时就需要开启线程执行Socket ...

  8. GPS服务端(上)-Socket服务端(golang)

    从第一次写GPS的服务端到现在,已经过去了八年时光.一直是用.net修修改改,从自己写的socket服务,到suppersocket,都是勉强在坚持着,没有真正的稳定过. 最近一段时间,服务端又出了两 ...

  9. 基于netty的socket服务端触发了channelInactive方法,但实际连接没有断开的问题

    背景: 一个中小型H5游戏,后端使用基于 netty 的socket服务 服务端 分为 分发服务器 & 业务服务器,业务服务器可负载 用户客户端与分发服务器连接 分发服务器再作为客户端与每台业 ...

随机推荐

  1. 基于WPF重复造轮子,写一款数据库文档管理工具(一)

    项目背景 公司业务历史悠久且复杂,数据库的表更是多而繁杂,每次基于老业务做功能开发都需要去翻以前的表和业务代码.需要理解旧的表的用途以及包含的字段的含义,表少还好说,但是表一多这就很浪费时间,而且留下 ...

  2. 如何有效地开发 Jmix 扩展组件

    扩展组件的概念在使用 Jmix 框架开发中扮演着非常重要的角色.我们将在本文探索什么是扩展组件以及 Jmix Studio 在扩展组件开发和应用程序模块化方面能给开发者带来什么帮助. Jmix 中的扩 ...

  3. 基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_170 2020年,"非著名Web框架"–Ruby on Rails已经15岁了.在今年,Rails 6.0趋于 ...

  4. Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  5. 后端编写Swagger接口管理文档

    Swagger接口管理文档 访问接口文档的网页:http://localhost:8080/swagger-ui/index.html 导入依赖 <dependency> <grou ...

  6. 牛客网 十二桥问题(状压DP)

    https://ac.nowcoder.com/acm/contest/1104/B 注意到\(\text{K}\)只有\(12\),因此对起点与每个毕经边对应的点单源最短路,\(\text{DP}\ ...

  7. LuoguP4719 【模板】动态 DP(动态DP,LCT)

    \(n \times m\)的算法谁都会吧,注意到每次修改影响的仅是一部分的信息,因此可思考优化. 将每个节点对应一个矩阵\(\begin{bmatrix} g[v][0] & g[v][0] ...

  8. Spring源码 21 Bean生命周期

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  9. MySQL 数据查询语句

    一般查询 字段取别名 别名不用加单引号,as 可省略. select t.id ID, t.name 名称 from grade t; 拼接字符串 concat(a, b) select concat ...

  10. Web 前端实战:Gitee 贡献图

    前言 这次要做的 Web 前端实战是一个 Gitee 个人主页下的贡献图(在线 Demo),偶尔做一两个,熟悉熟悉 JS 以及 jQ.整体来说这个案例并不难,主要是控制第一个节点以及最后一个节点处于星 ...