資源簡介
用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語言試題庫適合高職院校學生使用
評論
共有 條評論