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

📄 mcast.cc

📁 initial working phase of the design of said editor, featuring multicasting, advanced linux keyboard
💻 CC
字号:
#include "queue.h"#include "kbd.h"#include <fcntl.h>			// fcntl#include <sys/socket.h>#include <netinet/in.h>			// sockaddr_in#include <arpa/inet.h>#include <netdb.h>#include <netinet/ip.h>			// iphdr#include <netinet/udp.h>		// udphdr#include <unistd.h>			// getpid#include <stdio.h>			// printf/*#include <net/if.h>#include <sys/ioctl.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>*/extern queue* q;extern int ms; // multicast socketextern struct sockaddr_in to;extern u_int id;int init_mcast_socket(){   struct sockaddr_in sin; // address for bind   sin.sin_addr.s_addr = htonl( INADDR_ANY );   sin.sin_port = htons( 9876 );   ms = socket( PF_INET, SOCK_DGRAM, 0 );   int flags = fcntl( ms, F_GETFL, 0 );   if( flags == -1 ) printf( "bad flags.\n" );   fcntl( ms, F_SETFL, flags | O_ASYNC | O_NONBLOCK );   fcntl( ms, F_SETOWN, getpid() );   int msock_reuse = 1;   setsockopt( ms, SOL_SOCKET, SO_REUSEADDR, &msock_reuse, sizeof( int ) );   bind( ms, ( struct sockaddr* )&sin, sizeof( sin ) );     u_char msock_ttl = 4;   setsockopt( ms, IPPROTO_IP, IP_MULTICAST_TTL,      &msock_ttl, sizeof( u_char ) );   u_char msock_loop = 1;   setsockopt( ms, IPPROTO_IP, IP_MULTICAST_LOOP,      &msock_loop, sizeof( u_char ) );   struct ip_mreq mreq; // multicast request   struct hostent* multi = gethostbyname( "224.4.78.1" );   mreq.imr_multiaddr.s_addr = *( u_int* )( multi -> h_addr );//   struct hostent* local = gethostbyname( "192.168.0.1" );   mreq.imr_interface.s_addr = INADDR_ANY;//   mreq.imr_interface.s_addr = *( u_int* )local -> h_addr;   to.sin_addr = mreq.imr_multiaddr;   to.sin_port = htons( 9876 );   to.sin_family = AF_INET;   printf( "address: %s:%d\r\n", inet_ntoa( mreq.imr_multiaddr ), 9876 );   fflush( stdout );     if( setsockopt( ms, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof( mreq ) )   < 0 ) printf( "failed\n" );        return ms;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -