资源简介
用MFC实现了UDP的广播通信,已在本人机器上测试成功!
如果自己没运行起来,看看自己是否把该倒入的文件导入了,不要动不动就说别人。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#pragma comment(lib“ws2_32.lib“)
/*
HANDLE hrhlhbusy;
struct thrpar
{
SOCKET s;
};
struct recpar
{
SOCKET srec;
struct sockaddr_in addr;
};
UINT recthread(LPVOID pp)
{
SOCKET srecs2;
struct recpar *prec=(struct recpar *)pp;
sockaddr_in recaddr;
srec=prec->srec;
recaddr=prec->addr;
char buf[256];
DWORD ret;
printf(“recv thread start!“);
ret=recv(srecbuf2560);
if(ret==0)
{
printf(“connect close!“);
closesocket(srec);
return 0;
}
else if(ret==SOCKET_ERROR)
{
printf(“connect error!“);
closesocket(srec);
return 0;
}
printf(“recv data:%s“buf);
return 0;
}
DWORD WINAPI listhread(LPVOID pp)
{
::MessageBox(NULL“enter the listhread““KK“MB_OK);
struct thrpar *pthr=(struct thrpar*)pp;
SOCKET slsaccept;
sockaddr_in here there;
char name[256];
struct hostent *phost;
int ret;
gethostname(name256);
phost=gethostbyname(name);
here.sin_family=AF_INET;
here.sin_port=htons(1024);
here.sin_addr.S_un.S_un_b.s_b1=phost->h_addr_list[0][0];
here.sin_addr.S_un.S_un_b.s_b2=phost->h_addr_list[0][1];
here.sin_addr.S_un.S_un_b.s_b3=phost->h_addr_list[0][2];
here.sin_addr.S_un.S_un_b.s_b4=phost->h_addr_list[0][3];
sl=pthr->s;
ret=bind(sl(struct sockaddr *)&heresizeof(here));
if(ret!=0)
{
printf(“bind error“);
return 0;
}
ret=listen(sl5);
if(ret!=0)
{
printf(“listen error“);
return 0;
}
while(true)
{
int nlen=sizeof(there);
saccept=accept(sl(struct sockaddr *)&there&nlen);
if(saccept==INVALID_SOCKET)
{
printf(“accept socket invalid“);
}
DWORD wret=WaitForSingleobject(hbusy500);
if(wret==WAIT_TIMEOUT)
{
send(saccept“\0“10);
closesocket(saccept);
continue ;
}
DWORD recid;
struct recpar *prec;
prec->addr=there;
prec->srec=saccept;
hr=CreateThread(NULL0(LPTHREAD_START_ROUTINE)&listhreadprec0&recid);
return 1;
}
return 1;
}
void main(void)
{
SOCKET s;
sockaddr_in addrin;
WSADATA wsdata;
BOOL bsocket;
char *smsg=“this is a test“;
WSAStartup(0x0202&wsdata);
s=WSASocket(AF_INETSOCK_STREAM0NULL0WSA_FLAG_OVERLAPPED);
hbusy=CreateSemaphore(NULL02NULL);
struct thrpar *psc;
psc=new struct thrpar;
DWORD lisid;
psc->s=s;
hr=CreateThread(NULL0listhreadpsc0&lisid);
DWORD ret=WaitForSingleobject(hr10000);
if(ret==WAIT_object_0)printf(“thread time out%d\r\n“lisid);
}*/
void main(void)
{
SOCKET s;
sockaddr_in froma;
WSADATA wsdata;
BOOL optval;
//启动SOCKET库,版本为2.0
WSAStartup(0x0202&wsdata);
optval=TRUE;
//然后赋值给两个地址,一个 属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1475 2012-02-09 16:33 udp\recv\recv.plg
文件 533 2003-10-05 20:12 udp\recv\recv.dsw
文件 3738 2003-10-05 21:08 udp\recv\recv.cpp
文件 173 2012-01-21 19:37 udp\recv\copyright.bat
文件 3587 2012-02-09 16:33 udp\recv\recv.dsp
文件 1607 2012-02-09 16:33 udp\send\send.plg
文件 533 2003-10-05 20:12 udp\send\send.dsw
文件 932 2003-10-05 21:10 udp\send\send.cpp
文件 173 2012-01-21 19:37 udp\send\copyright.bat
文件 3587 2012-02-09 16:33 udp\send\send.dsp
目录 0 2003-09-30 15:04 udp\recv
目录 0 2003-09-30 15:04 udp\send
目录 0 2012-02-09 16:33 udp
----------- --------- ---------- ----- ----
16338 13
- 上一篇:四轴飞行器简介与姿态传感器卡尔曼滤波
- 下一篇:C语言试题库适合高职院校学生使用
相关资源
- 基于MFC的TCP调试助手源码95706
- 基于mfc的多线程文件传输
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- mfc 调用redis
- libnet发送udp和tcp包
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
川公网安备 51152502000135号
评论
共有 条评论