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. msdn原版系统和原版office

    建议使用迅雷下载工具进行下载 激活详见:在线激活win10.win8/8.1和office2019.2016.2013等的kms激活工具 windows 10 家庭版/家庭单语言版/专业版/教育版/专 ...

  2. LeetCode.数字转罗马数字

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  3. 详解MariaDB数据库的索引

    1.什么是索引 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 更通俗的说,数据库索引好比是一本书前面的目录,在查找内容之前可以先在 ...

  4. centOS设置开机自启

    原文:https://blog.csdn.net/txz317/article/details/49683439 1.利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下 ...

  5. hibernate-第一章-基础

    一,简介 hibernate是一个开源的ORM框架,它对我们的jdbc进行了轻量级的对象封装,它将我们的POJO与数据库表简历映射关系,是一个全自动的ORM框架;hibernate可以自动生成SQL语 ...

  6. Jmeter组成结构及运行原理

    Jmeter结构主要组成要素包括:测试计划,线程组,采样器以及监听器.对于各部件的作用域关系如下图: Jmeter是纯Java程序,使用JVM,运行采用多线程完成,往往单台负载机由于机器配置有限,支持 ...

  7. 提取Jar2Exe源代码,JavaAgent监控法

    最近遇见一个麻烦,明明知道是java写的小软件,但是打包成了exe,木得办法,之前打包的都有缓存能在TEMP文件夹找到.这次可不一样了,特此记录一下. 为此特地搜集了一些java打包成exe的软件. ...

  8. 分析python日志重复输出问题

    问题起源: ​ 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块.为了减少重复代码,应该不少同学和我一样便迫不及待的写了一个自己的日志函数,比如下面这样: impor ...

  9. 关于db2处理特殊字段出现异常java.io.charConversionException

    记录一下以前遇到的问题 在使用db2数据库处理数据的时候,碰到特殊字段,出现的问题 java.io.charConversionException 官方解决方法: db2.jcc.charsetDec ...

  10. 使用JumpServer管理你的服务器

    本文介绍CentOS 7从安装jumpserver到简单使用jumpserver管理服务器. 1.Jumpserver介绍 Jumpserver是一款开源的开源的堡垒机,如下图是官网介绍. 官网地址: ...