当前位置:  技术问答>linux和unix

急,向大家求助!结构体问题

    来源: 互联网  发布时间:2016-03-28

    本文导语:  问题是这样的,我要通过socket 使用tcp  向服务器端进程发送ip地址列表,ip地址是如“192.168.85.64”这样的字符串,我定义了一个结构体      sturct iplist {                 int ipnum ; // 表示有多少个ip    ...

问题是这样的,我要通过socket 使用tcp  向服务器端进程发送ip地址列表,ip地址是如“192.168.85.64”这样的字符串,我定义了一个结构体
  
  sturct iplist {
                int ipnum ; // 表示有多少个ip 
                 ??        // 这个域就是要存放ipnum个ip地址的域,但我不知该如何定义这个域,来存放ipnum个ip地址,该怎么处理?
          
                }


请大家给个思路,实现将多个如“192.168.85.64”这样的ip字符串,通过write()或其他的socket发送语句发送出去,在服务器端还能方便的将接收的ip提取出来。

或大家给个另外的方法实现上述功能。

有答案会及时结贴,谢谢大家

|
楼主的情况也是一个普遍的情况,即如何发送一个不定长的列表出去。我这暂有两种处理办法。
方法1:
  发送端:找个特殊分隔符,然后拼接成串,发送时先发送整个串的字节数,然后再发送串。
  接收端:按照发送顺序,先接收字节数域,再接收指定的字节数即可。
方法2(满足你用结构体的愿望):
  // 数据结构定义
  #define IP_LEN 4     // 一个IP的长度,v4的32位,v6的128位
  struct iplist {
     int     iNumIP;    // 列表个数,这里即是IP个数
     char**  pList;     // 列表首地址,这里是IP列表首地址
  };
  ----------------------------------
  // 发送端数据存储如下
  iplist iplst; 
  iplst.iNumIP = 2; 
  iplst.pList = (char*)malloc(IP_LEN*iplst.iNumIP);
  memcpy(iplst.pList, "10.1.24.1");
  memcpy(iplst.pList+IP_LEN, "10.x.y.z");

  // 发送端发送
  send(iplst.iNumIP, sizeof(int), ...);
  send(iplst.pList, IP_LEN*iplst.iNumIP);
  --------------------------------------------
  // 接收端接收
  iplist iplst;
  recv(iplst.iNumIP, sizeof(int), ...)
  iplst.pList = (char*)malloc(IP_LEN*iplst.iNumIP);
  recv(iplst.pList, IP_LEN);
  recv(iplst.pList+IP_LEN, IP_LEN);

PS:上面是伪代码,没有经过测试,不过思路应该说明白了吧。

|
结构体声明:
sturct iplist{
    int ipnum ; // 表示有多少个ip
    char **ipaddr;// 这个域就是要存放ipnum个ip地址的域
}
定义变量:
struct iplist ip;
给结构体变量赋值:
ip.ipnum = 2;
ip.ipaddr = (char**)malloc(ip.ipnum*sizeof(char*));
if(ip.ipaddr == NULL)
{
    printf("malloc error!n");
    return -1;
}
for(i = 0;i 

    
 
 

您可能感兴趣的文章:

  • 求助:我的第一个 socket 程序,缺少某些结构的定义
  • 【求助】谁知道net snmp 的源码结构啊?
  • 【求助】关于page结构的一个问题!
  • 定义一个进程结构体发生错误,求助!
  • 求助:关于结构的问题!
  • 求助:在java中如何使用象C中struct的数据结构???
  • 求助:linux-2.6.28内核编译RT2501内核提示内核net_device数据结构缺少成员变量
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • module的问题.版本问题 求助
  • 求助关于linux和windows引导lilo的问题
  • 求助~~求助 ~~linux文件读写问题
  • 求助! 又出现问题了!
  • 一个简单的问题,高分求助!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • socket实现多文件并发传输,求助多线程实现问题?
  • 各位大侠,求助一个关于ubuntu系统的问题
  • 100分求助,Ubuntu安装问题
  • linux的 iptables问题求助
  • 100分求助:关于linux下配置sendmail的问题
  • 急求助!安装linux后重装windows的问题
  • QT中关于方向键控制焦点的问题(求助)
  • 求助关于__cdecl的使用问题
  • 求助: 在ubuntu11.04上的有线连接问题
  • 急!!!小弟刚刚接触linux 在线求助<很简单的问题>
  • 求助: RedHat as4 内网正常,无法访问外网的问题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 求助:我的第一个 socket 程序,缺少某些结构的定义 iis7站长之家
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • 高分求助
  • 紧急求助java多线程编程!!!!!!!!!!!!!
  • 高分求助foxpro的jdbc驱动程序!!!!
  • ~(取反)操作错误,求助!谢谢
  • 求助:在Java中如何获得当前系统的CPU型号?
  • RPM紧急求助
  • 求助:如何在UNIX下访问已经在WINDOWS下安装好的ORACLE?
  • 求助!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3