📄 udp_bc_cli.c
字号:
#include <stdlib.h>
#include <stdio.h>
#include <os_socket.h>
void usage()
{
printf("udp_bc_cli port [addr]\n");
}
int main(int argc ,char * argv[])
{
char * broad_addr = NULL;
int port,ret,addr_len;
OS_SOCKET sock = INVALID_SOCKET;
struct sockaddr_in peer_addr;
char buffer[512];
if(argc < 2)
{
usage();
exit(-1);
}
port = atoi(argv[1]);
if((port <= 1024 ) || (port >65000))
{
fprintf(stderr,"error port %s\n",argv[1]);
ret = -2;
goto EXIT_CLIENT;
}
OS_SocketInit();
if(argc == 3)
{
broad_addr = argv[2];
}
if(OS_OpenUDPBroadCast(&sock,OS_ANY_PORT)!=OS_OK)
{
fprintf(stderr,"create broadcast port %d failure \n",port);
ret = -3;
goto EXIT_CLIENT;
}
strcpy(buffer,"hello");
addr_len = sizeof(struct sockaddr_in);
//Linux 最好采用计算出来的 子网广播地址发送,INANY_BROADCAST 可能失败
// if(OS_SendUDP(sock,NULL,port,buffer,strlen(buffer)) == OS_OK)
if(OS_SendUDP(sock,"192.168.0.255",port,buffer,strlen(buffer)) == OS_OK)
{
if((ret = recvfrom(sock,buffer,sizeof(buffer),0,(struct sockaddr *)&peer_addr,&addr_len)) > 0)
{
buffer[ret] = 0;
printf("%s\n",buffer);
}
}
ret = 0;
EXIT_CLIENT:
if(socket != INVALID_SOCKET)
OS_SocketClose(socket);
OS_SocketClear();
exit(ret);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -