UDP用户数据报协议
服务器端
  <1 创建套接字(socket)
  <2 绑定IP地址和端口(bind)
  <3 收发数据(sendto, recvfrom)
  <4 关闭连接(closesocket)
客户端
  <1 创建套接字(socket)
  <2 收发数据(sendto, recvfrom)
  <3 关闭连接(closesocket)
int sendto(
SOCKET s, //用来发送数据的套接字
const char FAR *buf, //指向发送数据的缓冲区
int len, //要发送数据长度
int flags, //一般指定0
const struct sockaddr *to, //指向一个包含目标地址和端口号的sockaddr_in结构
int toLen //结构大小
);
int recvfrom(SOCKET s, char *FAR buf, int len, int flags, struct sockaddr FAR *from, int FAR* fromLen)
简单实例
   服务器端
#include <iostream>
#include <stdio.h> #include "InitSock.h" using namespace std;
int main(void)
{
CInitSock initSock;
//创建套接字
SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (s == INVALID_SOCKET)
{
cout << "Failed socke()" << endl;
return ;
} sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons();
addr.sin_addr.S_un.S_addr = INADDR_ANY; //绑定套接字到一个本地地址
if (bind(s, (LPSOCKADDR)&addr, sizeof(addr)) == SOCKET_ERROR)
{
cout << "Failed bind()" << endl;
return ;
} //接收数据
char buf[];
sockaddr_in clientAddr;
int nLen = sizeof(addr);
while (TRUE)
{
int nRecv = recvfrom(s, buf, , , (sockaddr*)&clientAddr, &nLen);
if (nRecv > )
{
buf[nRecv] = '\0';
cout << "接收到数据" << inet_ntoa(clientAddr.sin_addr) << ": " << buf << endl;
}
} //关闭套接字
closesocket(s);
return ;
}
   客户端
#include <iostream>
#include <stdio.h> #include "InitSock.h" using namespace std;
int main(void)
{
CInitSock initSock;
//创建套接字
SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (s == INVALID_SOCKET)
{
cout << "Failed socke()" << endl;
return ;
}
//创建套接字之后如果首先sendto可以不绑定
//若首先recvfrom则需要绑定 //填写远程地址信息
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons();
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //发送数据
char szText[] = "UDP Server Demo\r\n";
sendto(s, szText, strlen(szText), , (sockaddr*)&addr, sizeof(addr));
closesocket(s); cout << "数据已发送" << endl;
getchar();
return ;
}
 
 

Winsock编程基础2(UDP流程)的更多相关文章

  1. Winsock编程基础介绍 .

    相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...

  2. Winsock编程基础2(Winsock编程流程)

    1.套接字的创建和关闭 //创建套接字 SOCKET socket( int af, //指定套接字使用的地址格式,Winsock只支持AF_INET int type, //套接字类型 int pr ...

  3. Socket编程基础——无连接UDP

    与面向连接的网络连接相比,无连接的网络通信不需要在服务器与客户端之间建立连接.面向非连接的Socket通信是基于UDP的,服务器端不需要调用listen()和accept()函数来等待客户端的连接:客 ...

  4. Winsock编程基础1

    1.加载和释放Winsoke库 //所有Winsock函数都是从WS2_32.DLL导出,包含相应库文件#include <winsock2.h>#pragma comment(lib, ...

  5. WinSock编程基础

    一.套接字模式   1.阻塞模式       创建套接字时,默认是阻塞模式,对recv函数调用会使程序进入等待状态,知道接收到数据才返回.   2.非阻塞模式:      可以调用ioctlsocke ...

  6. 【网络编程1】网络编程基础-TCP、UDP编程

    网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...

  7. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

  8. Winsock 编程流程

    近期看了<Window程序设计>感觉在网络方面讲的不错,讲的非常通俗易懂.与大家一同交流 转载请注明出处:http://blog.csdn.net/u010484477谢谢^_^ 使用 W ...

  9. TCP与UDP比较 以及并发编程基础知识

    一.tcp比udp真正可靠地原因 1.为什么tcp比udp传输可靠地原因: 我们知道在传输数据的时候,数据是先存在操作系统的缓存中,然后发送给客户端,在客户端也是要经过客户端的操作系统的,因为这个过程 ...

随机推荐

  1. 利用 Google Chart API 生成二维码大小不一致

    大小不一致是由于 chl  参数内容不一样导致的,而 chs 参数只能指定生成图片的大小,不能指定生成具体二维码大小. 比如:https://chart.googleapis.com/chart?ch ...

  2. 在后台启动Redis

    1.下载Redis包,解压到指定位置(这里不再赘述) 2.按“Win +R” 在输入框中输入“cmd” 3.在cmd中打开Redis所在的文件夹,如下图(这是我电脑上的) 4.执行“redis-ser ...

  3. PCB开钢网不容忽视的问题

    作为PCB工程师,或许你已经出过很多次的钢网文件,但却不一定了解出钢网有哪些要求. 1.首先我们来看下钢网的实物图,就是一块薄薄的钢板,钢网上有很多焊盘孔.把钢网盖在PCB板上后,这些焊盘孔就会和PC ...

  4. spring 报错

    一. java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 解决方案: 1. ...

  5. C# 百钱买百鸡

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  6. 使用X509Certificate2类操作证书文件

    public class CertHelper { string pfxPath = @"E:\开发辅助项目\cert\taisuyuanqing.pfx"; string cer ...

  7. Docker使用docker-compose.yml构建Asp.Net Core和Mysql镜像并与Mysql数据库通信

    version: '3' services: mycore01: build: context: .   container_name: 'mycore01'   #自定义容器名 dockerfile ...

  8. 《ServerSuperIO Designer IDE使用教程》- 5.树形结构管理设备驱动,小版本更新。发布:v4.2.3.1版本

    v4.2.3.1 更新内容:1.选择和管理设备驱动,增加树状结构显示.2.优化ide代码,核心代码没有改动.下载地址:官方下载 5. 树形结构管理设备驱动,小版本更新 5.1    概述 此次升级主要 ...

  9. 对Inode、Hard Link以及Soft Link的理解

    一.EXT2/EXT3等文件系统的分区格式 Linux的文件系统从EXT2开始将文件的属性和文件的实际内容分开存储,文件的属性由inode存储,文件的内容由block存储. 系统在对磁盘进行分区格式化 ...

  10. 项目管理目标:添加人员并向其分配任务 - Project

    已剪辑自: https://support.office.com/zh-cn/article/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E7%9B%AE%E6%A0%8 ...