怎样发送广播消息
使用CSocket类,比如发送一字符串"hello"
具体步骤应怎样,谢谢
问题点数:20、回复次数:8Top
1 楼xzou(亡狼补齿)回复于 2001-08-21 16:52:14 得分 10
用UDP包发送,使用sendto函数,参数const struct sockaddr FAR * to,里写入广播地址.Top
2 楼nichang(nichang)回复于 2001-08-21 17:00:37 得分 0
该Scocket是否需要初始化呢Top
3 楼xzou(亡狼补齿)回复于 2001-08-21 17:19:19 得分 0
其他步骤相当于一个udp的发送,需要初始化WSAStartup(),sockst(),发送端sendto()....
接受端recvfrom().....Top
4 楼MicroAngel(Jacky)回复于 2001-08-21 17:31:29 得分 10
创建的socket应该具有SO_BROADCAST属性Top
5 楼nichang(nichang)回复于 2001-08-21 17:45:40 得分 0
我的代码是这样的。
Client端:
ServerSend.Create(4000,SOCK_DGRAM);
char strText[20];
CString strAllAddr="127.0.0.1";
strcpy(strText,"nichang");
ServerSend.SendTo(strText,strlen(strText),4000,strAllAddr);
Server端:
CSocket ServerRec;
if(!ServerRec.Create(4000,SOCK_DGRAM,"127.0.0.1"))
{
MessageBox("error");
return;
}
char strText[20];
CString strAddr;
UINT nPort;
ServerRec.ReceiveFrom(strText,20,strAddr,nPort);
MessageBox(strText);
我的服务端接受不到客户端的信息Top
6 楼nichang(nichang)回复于 2001-08-21 18:10:01 得分 0
谢谢,可以运行了,代码没有变,真奇怪Top
7 楼xwchena(阳光不锈)回复于 2001-08-21 19:00:41 得分 0
给你一段代码:
CString message="just a test";
SOCKET s=INVALID_SOCKET;
s=::socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
AfxMessageBox("建立广播SOCKET 失败!");
return 11015;
}
BOOL boptval=TRUE;
if(setsockopt(s,SOL_SOCKET,SO_BROADCAST, (const char *)&boptval,sizeof(boptval)))
{
AfxMessageBox("setsockopt error ");
::closesocket(s);
return 11015;
}
//本地
sockaddr_in addr;
memset(&addr,0,sizeof(sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr=INADDR_ANY;
addr.sin_port =htons(3000);
// 绑定
int err=bind(s,(sockaddr*)&addr,sizeof(sockaddr));
if(err!=0)
AfxMessageBox("绑定错误");
//目标
sockaddr_in destaddr;
memset(&destaddr,0,sizeof(sockaddr_in));
destaddr.sin_family = AF_INET;
destaddr.sin_addr.S_un.S_addr=inet_addr("192.168.1.255");
destaddr.sin_port =htons(5000);
err=sendto(s,(const char*)&message,11,0,(sockaddr*)&destaddr,sizeof(destaddr));
if(err==SOCKET_ERROR)
{
AfxMessageBox("sendto err");
::closesocket(s);
return 11015;
}
::closesocket(s);
return 11014;
Top
8 楼use_id(use_id)回复于 2001-08-24 19:42:21 得分 0
学习。Top