利用WinSock进行无连接的通信
利用WinSock进行无连接的通信
WinSock提供了对UDP(用户数据报协议)的支持,通过UDP协议我们可以向指定IP地址的主机发送数据,同时也可以从指定IP地址的主机接收数据,发送和接收方处于相同的地位没有主次之分。利用CSocket操纵无连接的数据发送很简单,首先生成一个本地套接口(需要指明SOCK_DGRAM标记),然后利用
int CAsyncSocket::SendTo( const void* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0 )发送数据,
int CAsyncSocket::ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0 )接收数据。
利用UDP协议发送和接收都可以是双向的,就是说任何一个主机都可以发送和接收数据。但是UDP协议是无连接的,所以发送的数据不一定能被接收,此外接收的顺序也有可能与发送顺序不一致。下面是相关代码:
/*发送方在端口6800上向接收方端口6801发送数据*/
//发送方代码:
BOOL CMy62_s1_clientDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//创建本地套接口
m_sockSend.Create(6800,SOCK_DGRAM,NULL);
//绑定本地套接口
m_sockSend.Bind(6800,"127.0.0.1");
//创建一个定时器定时发送
SetTimer(1,3000,NULL);
...
}
void CMy62_s1_clientDlg::OnTimer(UINT nIDEvent)
{
static iIndex=0;
char szSend[20];
sprintf(szSend,"%010d",iIndex++);
//发送UDP数据
int iSend= m_sockSend.SendTo(szSend,10,6801,"127.0.0.1",0);
TRACE("sent %d byte\n",iSend);
...
}
//接收方代码
BOOL CMy62_s1_serverDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//创建本地套接口
m_sockRecv.Create(6801,SOCK_DGRAM,"127.0.0.1");
//绑定本地套接口
m_sockRecv.Bind(6801,"127.0.0.1");
//创建一个定时器定时读取
SetTimer(1,3000,NULL);
...
}
void CMy62_s1_serverDlg::OnTimer(UINT nIDEvent)
{
char szRecv[20];
CString szIP("127.0.0.1");
UINT uPort=6800;
//接收UDP数据
int iRecv =m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0);
TRACE("received %d byte\n",iRecv);
...
}
/*接收方采用同步读取数据的方式,所以没有读到数据函数调用将不会返回*/
利用WinSock进行无连接的通信相关推荐
- 利用WinSock进行有连接的通信
利用WinSock进行有连接的通信 WinSock提供了对TCP(传输控制协议)的支持,通过TCP协议我们可以与指定IP地址的主机建立,同时利用建立的连接可以双向的交换数据.利用CSocket操纵有连 ...
- 利用三层交换机实现VLAN的通信实验报告
利用三层交换机实现VLAN的通信实验报告<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...
- 利用委托 实现窗体间通信,非原创
copy自:https://www.cnblogs.com/hugoNB/p/7130562.html,这个作者写的浅显易懂,就复制下来自己看 实现过程: 这里主要是用到委托实现,所以主要描述一下委托 ...
- 在Unity3d项目中利用Udp进行局域网内通信
在Unity3d项目中利用Udp进行局域网内通信 实现一个用于存储通信息的Quene using System.Collections; using System.Collections.Generi ...
- 07 接头暗语:如何利用 Netty 实现自定义协议通信?
文章目录 07 接头暗语:如何利用 Netty 实现自定义协议通信? 通信协议设计 1. 魔数 2. 协议版本号 3. 序列化算法 4. 报文类型 5. 长度域字段 6. 请求数据 7. 状态 8. ...
- stm32利用mqtt与小程序通信
stm32利用mqtt与小程序通信 stm32连接服务器端 小程序连接服务器 本项目实现的功能如下:通过stm32连接esp8266,然后利用mqtt协议连接到服务器,同时小程序端也连接到服务器,通过 ...
- 如何利用Winsock控件编写自己的Internet程序
VB自带的Winsock控件是一个非常强大的工具,利用它你可以在你的程序中使用各种Internet协议.如果你对网络协议及计算机之间通信的原理有所了解的话,理论上讲你可以编写任何Internet程序. ...
- C#中利用Socket实现网络语音通信[初级版本]
现在时下的VOIP软件很多,比较有名的就是Skype,还有其它诸如UUcall.快门等等.它们提供的功能除了网络上的语音通话外,还可以与固定电话.手机等通话.在本篇中主要介绍利用C#实现语音通信的基本 ...
- DirectX编程:C#中利用Socket实现网络语音通信
现在时下的VOIP软件很多,比较有名的就是Skype,还有其它诸如UUcall.快门等等.它们提供的功能除了网络上的语音通话外,还可以与固定电话.手机等通话.在本篇中主要介绍利用C#实现语音通信的基本 ...
最新文章
- 微信小程序自定义轮播图滚动样式 自定义组件轮播图的实现
- VUE 动态给对象增加属性,并触发视图更新。
- WPF 路由事件初步
- C#操作符??和?:
- 攻防世界-Misc-something_in_image(秒懂!!)
- 覆盖网络 Flannel 0.7
- cdn厂商 同兴万点_同兴万点:TXNetworks和CDNetworks让我们傻傻分不清
- 用Crossdev安装MIPS交叉编译工具链
- vue process.env获取不到_从文档开始,重学vue(下)源码级别
- [Oracle 9i] Case Expression and Case Statement in 9i
- ArrayList非线程安全
- JAVAFX 第三方库 布局 小工具 美化 测试 UI 框架 推荐
- 语音识别(ASR)论文优选:A comparison of streaming models and data augmentation methods for robust speech recog
- 小程序制作宋词欣赏海报
- arccotx图像在matlab,arccotx图像(cotx的定义域和图像)
- 2020年9月23日 晴(补2020年9月22日 晴)
- 电脑一直重新启动怎么回事
- 【C语言程序设计】实验 1
- YTU OJ 2914 Problem A xiaoping学构造函数
- 为什么神经网络层数越多越好?训练次数与层数的区别与联系