1、socket通信

  服务端接收数据

  

package main

import (
"fmt"
"net"
"strings"
) func main() {
//创建监听
ip := "127.0.0.1"
port := 8848
address := fmt.Sprintf("%s:%d",ip,port)
listen, err := net.Listen("tcp", address)
if err != nil {
fmt.Println(err)
return
}
//一直轮询监听
for {
fmt.Println("监听中...")
//接收数据
conn, err := listen.Accept()
if err != nil {
fmt.Println("accept",err)
return
}
fmt.Println("连接成功")
//启动多个处理回调
go handle(conn)
}
} func handle(conn net.Conn) {
for{
//创建一个容器,用于接受读取到的数据
buf := make([]byte,1024)
//cnt真正读取客户端发来的数据长度
fmt.Println("准备读取发送过来的数据")
cnt, err := conn.Read(buf)
if err != nil {
fmt.Println("cnt err",err)
return
}
//只输出收到的长度
fmt.Println("长度:",cnt,"---数据:",string(buf[:cnt]))
//将数据转成大写
upperData := strings.ToUpper(string(buf[:cnt]))
write, err := conn.Write([]byte(upperData))
if err != nil {
fmt.Println("write err",err)
return
}
fmt.Println("长度:",write,"---数据:",upperData)
}
//关闭
conn.Close()
}

  socket客户端请求

  

func main() {
dial, err := net.Dial("tcp", ":8848")
if err != nil {
panic(err)
}
fmt.Println("connect success")
//不断重复发送多次
for {
//发送数据
sendData := []byte("hello world")
write, err := dial.Write(sendData)
if err != nil {
panic(err)
}
fmt.Println("send :",write,"--sendData:",string(sendData)) //接收服务器返回
buf := make([]byte,1024)
read, err := dial.Read(buf)
if err != nil {
panic(err)
}
time.Sleep(time.Second)
fmt.Println("client receive,",read,"--receive data:",string(buf[:read]))
}
defer dial.Close()
}

2、http服务请求

  服务端

func main() {
//注册路由
http.HandleFunc("/user", func(writer http.ResponseWriter, request *http.Request) {
//write 将数据返回给客户端
//request 请求数据
fmt.Println("method:",request.Method,request)
io.WriteString(writer,"这是返回的数据")
})
if err := http.ListenAndServe("127.0.0.1:8080",nil); err != nil {
panic(err)
}
}

  客户端请求

func main() {
//http包
client := http.Client{}
rsp, err := client.Get("http://127.0.0.1:8080")
if err != nil {
panic(err)
}
fmt.Println(rsp,rsp.Body,rsp.Header.Get("Content-Type"))
}

  

  

go socket、http网络编程demo的更多相关文章

  1. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  2. 浅谈JAVA中如何利用socket进行网络编程(一)

    转自:http://developer.51cto.com/art/201106/268385.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  3. Linux 系统编程 学习:06-基于socket的网络编程1:有关概念

    Linux 系统编程 学习:006-基于socket的网络编程1:有关概念 背景 上一讲 进程间通信:System V IPC(2)中,我们介绍了System IPC中关于信号量的概念,以及如何使用. ...

  4. Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信

    Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信 背景 上一讲我们介绍了网络编程的一些概念.socket的网络编程的有关概念 这一讲我们来看UDP 通信. 知识 U ...

  5. Python Socket,How to Create Socket Server? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...

  6. Python Socket,How to Create Socket Cilent? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...

  7. Socket 的网络编程

    socket 网络编程的服务端: 1) 创建socket 套接字. 2) 和socket绑定主机地址和端口 3) socket 主动监听端口,看又没有来连接. 4) 当执行到 accept() 时, ...

  8. Java NIO网络编程demo

    使用Java NIO进行网络编程,看下服务端的例子 import java.io.IOException; import java.net.InetAddress; import java.net.I ...

  9. 网络编程demo之Udp和URL

    首先是udp编程客户端发送消息给服务端,服务端接受然后打印到console控制台上 下面是一个有代表性的demo package com.henu.liulei; import java.io.IOE ...

随机推荐

  1. [SPDK/NVMe存储技术分析]014 - (NVMe over PCIe)Host端的命令处理流程

    NVMe over PCIe最新的NVMe协议是1.3. 在7.2.1讲了Command Processing流程.有图有真相. This section describes command subm ...

  2. 羽夏看Win系统内核——异常篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  3. 什么是 Spring Cloud?

    Spring cloud 流应用程序启动器是 于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Task,一个生命周期短暂的微服务框架,用于快 ...

  4. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  5. 什么是 bean 装配?

    装配,或 bean 装配是指在 Spring 容器中把 bean 组装到一起,前提是容器需要 知道 bean 的依赖关系,如何通过依赖注入来把它们装配到一起.

  6. Zookeeper Watcher 机制 -- 数据变更通知 ?

    Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务 端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通 知来实现分布式的通知功 ...

  7. 运筹学之"概率"和"累计概率"和"谁随机数"

    概率 = 2/50 = 0.2 累计概率 = 上个概率加本次概率 案例1 概率=销量天数 / 天数 = 2 /100 = 0.02 累计概率 = 上个概率加本次概率 = 0.02 +0.03 = 0. ...

  8. 机器学习 machine learn

    机器学习 机器学习 概述 什么是机器学习 机器学习是一门能够让编程计算机从数据中学习的计算机科学.一个计算机程序在完成任务T之后,获得经验E,其表现效果为P,如果任务T的性能表现,也就是用以衡量的P, ...

  9. 使用滑模控制对sin(t)曲线追踪

    结合:[Matlab]简单的滑模控制程序及Simulink仿真本片文章观看,此篇文章是在这篇文章的基础上进行修改的 输出u的推导过程 如果不明白控制量输出u的推到过成请看:[控制理论]滑模控制最强解析 ...

  10. CSS入门指南-4:页面布局

    这是<CSS设计指南>的读书笔记,用于加深学习效果. display 属性 display是 CSS 中最重要的用于控制布局的属性.每个元素都有一个默认的 display 值.对于大多数元 ...