udp与tcp的不同在于客户端请求方式不同,udp缺少Accept函数。

一个简单的udp客户端:

package main;

import (
"net"
"log"
"fmt"
) func chkError(err error) {
if err != nil {
log.Fatal(err);
}
} func main() {
//获取udpaddr
udpaddr, err := net.ResolveUDPAddr("udp4", "127.0.0.1:8080");
chkError(err);
//连接,返回udpconn
udpconn, err2 := net.DialUDP("udp", nil, udpaddr);
chkError(err2);
//写入数据
_, err3 := udpconn.Write([]byte("client\r\n"));
chkError(err3);
buf := make([]byte, 256);
//读取服务端发送的数据
_, err4 := udpconn.Read(buf);
chkError(err4);
fmt.Println(string(buf));
}

udp服务端代码:

package main;

import (
"net"
"log"
"fmt"
) func chkError(err error) {
if err != nil {
log.Fatal(err);
}
} func clientHandle(conn *net.UDPConn) {
defer conn.Close();
buf := make([]byte, 256);
//读取数据
//注意这里返回三个参数
//第二个是udpaddr
//下面向客户端写入数据时会用到
_, udpaddr, err := conn.ReadFromUDP(buf);
if err != nil {
return;
}
fmt.Println(string(buf));
conn.WriteToUDP([]byte("hello,client \r\n"), udpaddr);
} func main() {
udpaddr, err := net.ResolveUDPAddr("udp4", "127.0.0.1:8080");
chkError(err);
//监听端口
udpconn, err2 := net.ListenUDP("udp", udpaddr);
chkError(err2);
//udp没有对客户端连接的Accept函数
for {
clientHandle(udpconn);
}
}

go语言net包udp socket的使用的更多相关文章

  1. android firmware 利用UDP socket发送Magic Packet--c语言版本

    android firmware 利用UDP socket发送Magic Packet 1 Magic Packet格式: 6个0xFF + 16个Dst Mac Address 2 代码需要设置目的 ...

  2. iOS Socket编程-C语言版(UDP)

    . UDP Socket编程 先讲一讲UDP编程,因为比TCP要简单多了.首先,我们需要明白UDP是用户数据报协议,英文名为User Datagram Protocol,它是面向无连接的. 注意:So ...

  3. Windows UDP socket recvfrom返回10054错误的解决办法

    现象: 在Windows 7系统上,A使用UDP socket,调用sendto函数向一个目标地址B发送数据,但是目标地址B没有接收数据,如果A此时立即调用recvfrom试图接收目标地址B发回的数据 ...

  4. TCP/UDP socket

    TCP socket:有链接,绑定端口,接着去侦听,若有请求,那么accept(),获得新的socket,并且去接收/发送数据报. UDP socket:无连接,不需要侦听,也不用一个新的socket ...

  5. c#和UDP SOCKET广播

    server:  Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp); // ...

  6. Linux编程之UDP SOCKET全攻略

    这篇文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到.尽可能做到,读了一篇文章之后,大家对udp so ...

  7. 项目总结22:Java UDP Socket数据的发送和接收

    项目总结22:Java UDP Socket数据的发送和接收 1-先上demo 客户端(发送数据) package com.hs.pretest.udp; import java.io.IOExcep ...

  8. Linux C++ UDP Socket通信实例

    环境:Linux 语言:C++ 通信方式:UDP 服务器端的步骤如下: 1. socket:      建立一个socket 2. bind:          将这个socket绑定在某个端口上(A ...

  9. 【转】Linux编程之UDP SOCKET全攻略

    转自:http://www.cnblogs.com/skyfsm/p/6287787.html?utm_source=itdadao&utm_medium=referral 这篇文章将对lin ...

随机推荐

  1. 【原创】逆向练习(CrackMe)

    Write Up 登录的两个方法 方法1.用IDA分析 新版测试题.exe.在Strings Window中查找有一定意义的串. 从上面的窗口中,发现了CyberSwat和passwordisme这两 ...

  2. Idea使用Maven异常 --- Maven网络代理设置

    在conf/setting.xml和m2/repository/setting.xml中加入: <proxies> <!-- proxy | Specification for on ...

  3. Hibernate 再接触 关系映射 一对一双向外键关联

    凡是双向关联必设mapped by  由对方主导 wifi.java package com.bjsxt.hibernate; import javax.persistence.Entity; imp ...

  4. python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)

    一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...

  5. curl get请求

    curl --proxy 192.168.1.159:8889  -d "grant_type=client_credential&appid=wxxx&secret=xxx ...

  6. PPT的感想

    ①double:使用double类型的数值进行计算, 其结果是不精确的.因为double类型的数值占用64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差. 这个涉及到二进制 ...

  7. mongo的csv文件参考

    https://blog.csdn.net/u012318074/article/details/77713228

  8. lua keynote2

    [lua keynote2] 1.Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil). > s, e = ...

  9. web 浏览器窗口window 与框架 frameset 的关系

    如果页面包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中,可以通过数字索引(从0开始,从左右到右,从上到下)或者框架名称来访问相对应的window对象. 每个window ...

  10. 如何添加Modeling 菜单

    创建page 在protal settings的cdoform中add new item 在modeing中就可以使用该对象对应的维护页面了.