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. SpringBoot整合RabbitMQ-5.7-课堂笔记-02

  2. SpringCloudAlibaba 微服务讲解(二)微服务环境搭建

    微服务环境搭建 我们这次是使用的电商项目的商品.订单.用户为案例进行讲解 2.1 案例准备 2.1.1 技术选型 maven :3.3.9 数据库:mysql 持久层:SpringData JPA S ...

  3. 浅析 c++ bitset 的用法

    浅析 c++ bitset 的用法 总述 C++的 \(bitset\) 位于 <bitset> 头文件中,这是一种类似于数组的数据结构,每个位置存储 \(0\ or\ 1\) ,并且每个 ...

  4. Redis Cluster 集群搭建与扩容、缩容

    说明:仍然是伪集群,所有的Redis节点,都在一个服务器上,采用不同配置文件,不同端口的形式实现 前提:已经安装好了Redis,本文的redis的版本是redis-6.2.3 Redis的下载.安装参 ...

  5. Java9至17的新特性总结

    总览 讲讲Java 9-17 的一些语法糖和一些新发布的jeps, 重点讲讲JVM的垃圾回收器 时间线 SpringBoot 为什么选择Java17这个版本.我估计跟下面这个图有关系. Java 8 ...

  6. 【freertos】005-启动调度器分析

    前言 本节主要讲解启动调度器. 这些都是与硬件相关,所以会分两条线走:posix和cortex m3. 原文:李柱明博客:https://www.cnblogs.com/lizhuming/p/160 ...

  7. 解决Idea.exe无法启动问题(idea2017.3版本)

    问题: 最近在用idea时,突然弹出了以下消息框(图片不是我的): 将Xmx的值调大以后,idea还是闪退了.并且再点击idea.exe时,idea已经木有反映了,无法启动. 解决方案: 方案一(失败 ...

  8. DWR是什么?有什么作用?

    DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站. 它可以允许在浏览器里的代码使用运行 ...

  9. Linux 网卡配置参数

    网卡配置文件位于 /etc/sysconfig/network-scripts/ 目录下 网卡配置文件在RHEL5/6以eth为网卡文件的前缀,在RHEL7中以ifcfg为网卡文件的前缀 配置 解释 ...

  10. Effective Java —— 用静态工厂方法代替构造器

    本文参考 本篇文章参考自<Effective Java>第三版第一条"Consider static factory methods instead of constructor ...