⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udp_bc_cli.c

📁 linux下的多个网络通讯的例子 可多参考下
💻 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 + -