首页 \ 问答 \ zookeeper的节点是什么概念,比如安装一个zookeeper,服务消费者和提供者就可以接入,

zookeeper的节点是什么概念,比如安装一个zookeeper,服务消费者和提供者就可以接入,

zookeeper的节点是什么概念,比如安装一个zookeeper,服务消费者和提供者就可以接入,zookeeper的节点是什么概念,比如安装一个zookeeper,服务消费者和提供者就可以接入,注册和查询服务,但是这个节点是什么概念呢?就是Zookeeper zp=new Zookeeper();zp.createNode(path,data)中的node,还有path是什么意思,在哪里会使用这些node
更新时间:2022-02-08 11:02

最满意答案

UDP广播数据包的原理如下,其实很简单:1)专门用于同时向网络中所有工作站进行发送的一个地址叫做广播地址。主机标识段host ID 为全1 
的IP 
地址为广播地址。如果你的IP为:192.168.1.39,子网掩码为:255.255.255.0,则广播地址为:192.168.1.255;如果
IP为192.168.1.39,子网掩码为:255.255.255.192,则广播地址为:192.168.1.63。
2)如果只想在本网络内广播数据,只要向广播地址发送数据包即可,这种数据包可以被路由,它会经由路由器到达本网段内的所有主机,此种广播也叫直接广播;如果想在整个网络中广播数据,要向255.255.255.255发送数据包,这种数据包不会被路由,它只能到达本物理网络中的所有主机,此种广播叫有限广播。

详细的资料可以参考:“对于UDP组播的一些认识”
http://wenku.baidu.com/view/985c0a160b4e767f5acfce14.html

其他回答

udp server程序
1、编写udp server程序的步骤
(1)使用socket()来建立一个udp socket,第二个参数为sock_dgram。
(2)初始化sockaddr_in结构的变量,并赋值。sockaddr_in结构定义:
struct sockaddr_in {
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
这里使用“08”作为服务程序的端口,使用“inaddr_any”作为绑定的ip地址即任何主机上的地址。
(3)使用bind()把上面的socket和定义的ip地址和端口绑定。这里检查bind()是否执行成功,如果有错误就退出。这样可以防止服务程序重复运行的问题。
(4)进入无限循环程序,使用recvfrom()进入等待状态,直到接收到客户程序发送的数据,就处理收到的数据,并向客户程序发送反馈。这里是直接把收到的数据发回给客户程序。

2、udpserv.c程序内容:
#include 

 
#include 
 
  
#include 
  
   
#include 
   
    
#include 
    
     
#include 
     
       #define maxline 80 #define serv_port 8888 void do_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen) { int n; socklen_t len; char mesg[maxline]; for(;;) { len = clilen; /* waiting for receive data */ n = recvfrom(sockfd, mesg, maxline, 0, pcliaddr, &len); /* sent data back to client */ sendto(sockfd, mesg, n, 0, pcliaddr, len); } } int main(void) { int sockfd; struct sockaddr_in servaddr, cliaddr; sockfd = socket(af_inet, sock_dgram, 0); /* create a socket */ /* init servaddr */ bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = af_inet; servaddr.sin_addr.s_addr = htonl(inaddr_any); servaddr.sin_port = htons(serv_port); /* bind address and port to socket */ if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) { perror("bind error"); exit(1); } do_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr)); return 0; } udp client程序 1、编写udp client程序的步骤 (1)初始化sockaddr_in结构的变量,并赋值。这里使用“8888”作为连接的服务程序的端口,从命令行参数读取ip地址,并且判断ip地址是否符合要求。 (2)使用socket()来建立一个udp socket,第二个参数为sock_dgram。 (3)使用connect()来建立与服务程序的连接。与tcp协议不同,udp的connect()并没有与服务程序三次握手。上面我们说了udp是非连接的,实际上也可以是连接的。使用连接的udp,kernel可以直接返回错误信息给用户程序,从而避免由于没有接收到数据而导致调用recvfrom()一直等待下去,看上去好像客户程序没有反应一样。 (4)向服务程序发送数据,因为使用连接的udp,所以使用write()来替代sendto()。这里的数据直接从标准输入读取用户输入。 (5)接收服务程序发回的数据,同样使用read()来替代recvfrom()。 (6)处理接收到的数据,这里是直接输出到标准输出上。 2、udpclient.c程序内容: #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include 
           
             #include 
            
              #include 
             
               #define maxline 80 #define serv_port 8888 void do_cli(file *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen) { int n; char sendline[maxline], recvline[maxline + 1]; /* connect to server */ if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) == -1) { perror("connect error"); exit(1); } while(fgets(sendline, maxline, fp) != null) { /* read a line and send to server */ write(sockfd, sendline, strlen(sendline)); /* receive data from server */ n = read(sockfd, recvline, maxline); if(n == -1) { perror("read error"); exit(1); } recvline[n] = 0; /* terminate string */ fputs(recvline, stdout); } } int main(int argc, char **argv) { int sockfd; struct sockaddr_in srvaddr; /* check args */ if(argc != 2) { printf("usage: udpclient 
              
               \n"); exit(1); } /* init servaddr */ bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = af_inet; servaddr.sin_port = htons(serv_port); if(inet_pton(af_inet, argv[1], &servaddr.sin_addr) <= 0) { printf("[%s] is not a valid ipaddress\n", argv[1]); exit(1); } sockfd = socket(af_inet, sock_dgram, 0); do_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); return 0; } 运行例子程序 1、编译例子程序 使用如下命令来编译例子程序: gcc -wall -o udpserv udpserv.c gcc -wall -o udpclient udpclient.c 编译完成生成了udpserv和udpclient两个可执行程序。 2、运行udp server程序 执行./udpserv &命令来启动服务程序。我们可以使用netstat -ln命令来观察服务程序绑定的ip地址和端口,部分输出信息如下: active internet connections (only servers) proto recv-q send-q local address foreign address state tcp 0 0 0.0.0.0:32768 0.0.0.0:* listen tcp 0 0 0.0.0.0:111 0.0.0.0:* listen tcp 0 0 0.0.0.0:6000 0.0.0.0:* listen tcp 0 0 127.0.0.1:631 0.0.0.0:* listen udp 0 0 0.0.0.0:32768 0.0.0.0:* udp 0 0 0.0.0.0:8888 0.0.0.0:* udp 0 0 0.0.0.0:111 0.0.0.0:* udp 0 0 0.0.0.0:882 0.0.0.0:* 可以看到udp处有“0.0.0.0:8888”的内容,说明服务程序已经正常运行,可以接收主机上任何ip地址且端口为8888的数据。 如果这时再执行./udpserv &命令,就会看到如下信息: bind error: address already in use 说明已经有一个服务程序在运行了。 3、运行udp client程序 执行./udpclient 127.0.0.1命令来启动客户程序,使用127.0.0.1来连接服务程序,执行效果如下: hello, world! hello, world! this is a test this is a test ^d 输入的数据都正确从服务程序返回了,按ctrl+d可以结束输入,退出程序。 如果服务程序没有启动,而执行客户程序,就会看到如下信息: $ ./udpclient 127.0.0.1 test read error: connection refused 说明指定的ip地址和端口没有服务程序绑定,客户程序就退出了。这就是使用connect()的好处,注意,这里错误信息是在向服务程序发送数据后收到的,而不是在调用connect()时。如果你使用tcpdump程序来抓包,会发现收到的是icmp的错误信息。
              
             
            
           
          
         
        
       
      
     
    
   
  
 

相关问答

更多
  • 需要做一个socket通信程序,服务器端为vc做的,我需要用java做个客户端,对方要求的通信格式如下: 消息头: 第1~4字节 用字节数表示的消息头的长度 第5~8字节 用字节数表示的消息内容长度 第9字节 服务类型:1为响应,2为请求 第10~11字节 源系统代号 第12~13字节 目的系统代号 消息内容: xml格式 小弟之前没有做过这样的程序,实在是一点头绪都没有,那位高手能给点提示 java应该如何组装消息 采用那种方式发送给服务器端 先谢谢啦! 回复人:sureyor() ( 五级(中级)) 信 ...
  • 从错误代码an integer is required来看,需要提供一个整形。 要做的是改成 port0 = 21567,而不是 port0 = ’21567‘。 希望能帮到你,有疑问请追问!
  • UDP广播数据包的原理如下,其实很简单:1)专门用于同时向网络中所有工作站进行发送的一个地址叫做广播地址。主机标识段host ID 为全1 的IP 地址为广播地址。如果你的IP为:192.168.1.39,子网掩码为:255.255.255.0,则广播地址为:192.168.1.255;如果 IP为192.168.1.39,子网掩码为:255.255.255.192,则广播地址为:192.168.1.63。 2)如果只想在本网络内广播数据,只要向广播地址发送数据包即可,这种数据包可以被路由,它会经由路由器到 ...
  • 我找到了我的问题的解决方案:socket_set_option()具有选项SO_RCVTIMEO,它仅为socket_recv()设置超时 例如: socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>1,"usec"=>0)); 这将在socket_recv()的套接字级别上为我的套接字设置超时1秒和0微秒http://www.php.net/manual/en/function.socket-set-option.php 谢谢你,如果你 ...
  • 对于问题1:发送ACK,你可以复制你反向的内容。 After many attempts to get a simple acknowledgment reply from my server this did it. Beyond literally starting completely over each round, the time.sleep(.1) function was the only missing key. It allowed the server and client both ...
  • UdpClient有一个构造函数重载,它接受一个端口。 您可以使用此重载来指定端口号。 UdpClient udpClient = new UdpClient(3001); 将构造函数留空或将其设置为0会使UdpClient选择一个随机可用的端口号。 The UdpClient has a constructor overload that takes a port. You can use this overload to specify the port no. UdpClient udpClient ...
  • 错误说你有一个无效的参数。 在阅读你的代码时,我可以说冒犯的参数是IP地址: 你将你的套接字绑定到127.0.0.1 您尝试将数据发送到另一个网络上的 192.0.0.1 如果要将数据发送到IP地址为192.0.0.1的主机,请将此套接字绑定到同一网络上的本地网络接口,或者在可找到到192.0.0.1的路由的网络上 如果我将套接字绑定到192.168.56.x (x是本地地址),我可以将数据发送到192.168.56.y (y是地址服务器); 但如果我绑定到127.0.0.1我得到IllegalArgume ...
  • 您的TCP套接字已连接,但您的UDP套接字未连接。 这意味着对UDP套接字上的每个发送/接收进行额外处理。 在UDP套接字的每一侧调用connect ,就像在TCP套接字上调用connect / accept一样。 像iperf这样的程序可以做到准确测量。 Your TCP socket is connected but your UDP socket is not. This means extra processing for every send/receive on the UDP socket. ...
  • 由于在使用数据报时不存在保证的连接,因此客户端可以继续向服务器发送消息并尝试接收回复。 在连接,关闭或关闭套接字方面没有什么特别之处。 服务器应该像以前一样使用适当编写的处理程序来接收和发送客户端通信。 以下示例演示了如何编写此类程序并包含用于指定其参数的命令行界面。 UDPClient.py #! /usr/bin/env python3 import argparse import socket def main(): parser = argparse.ArgumentParser(des ...

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。