小编cap*_*him的帖子

继续调用malloc()和free()有多糟糕?

我正在发送一个文本文件 - 客户端 - 服务器将文本分解为每个512字节的数据包,但是一些数据包包含的文本小于最大大小所以在接收每个数据包的服务器端我正在调用malloc()再次构建一个字符串这是一种不好的做法吗?保持一个适合最大长度的工作缓冲区并保持迭代,复制和覆盖它的值更好吗?

好吧@nm这里是代码,这个if是在select()唤醒的for(;;)循环里面

if(nbytes==2) {
            packet_size=unpack_short(short_buf);
            printf("packet size is %d\n",packet_size);
            receive_packet(i,packet_size,&buffer);
            printf("packet=%s\n",buffer);
            free(buffer);
}
//and here is receive_packet() function 
int receive_packet(int fd,int p_len,char **string) {
 *string = (char *)malloc(p_len-2); // 2 bytes for saving the length    
 char *i=*string;   
 int temp;
 int total=0;
 int remaining=p_len-2;
 while(remaining>0) {
     //printf("remaining=%d\n",remaining);
     temp = recv(fd,*string,remaining,0);
     total+=temp;
     remaining=(p_len-2)-total;
     (*string) += temp;
 }
 *string=i;
 return 0;
 }
Run Code Online (Sandbox Code Playgroud)

c malloc free network-programming packets

19
推荐指数
2
解决办法
1万
查看次数

Firefox Firebug控制台历史记录

我找不到console.log()的历史记录?有没有办法保持或查看以前记录的消息,我的页面不断重新加载和重定向,以便清除日志!

firefox firebug

8
推荐指数
1
解决办法
6210
查看次数

C在一个字节中存储2个数字

u_char  ip_vhl;     /* version << 4 | header length >> 2 */
Run Code Online (Sandbox Code Playgroud)

我做不到,这是怎么做到的?你能举例说明如何使用这个字节存储这2个数字,知道每个数字都是4位

c binary bit-shift

1
推荐指数
1
解决办法
1450
查看次数

C pcap 802.11标头

 struct mgmt_header_t {
    u_int16_t   fc;     /* 2 bytes */
    u_int16_t   duration;   /* 2 bytes */
    u_int8_t    da[6];      /* 6 bytes */
    u_int8_t    sa[6];      /* 6 bytes */
    u_int8_t    bssid[6];   /* 6 bytes */
    u_int16_t   seq_ctrl;   /* 2 bytes */
};

void my_callback(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
    //printf("********* New Packet Arrived *********\n");
    //printf("Jacked a packet with length [%d]\n", header->len);    

    struct mgmt_header_t *mac_header = (struct mgmt_header_t *) (packet+24);
    if (mac_header->fc > 255 )
        printf("comon");
Run Code Online (Sandbox Code Playgroud)

我知道mac_header是在正确的位置因为我从它获取mac地址并且它们是正确的但问题是fc它永远不会大于255所以总是左边的字节为零

更新:


我想我现在得到它感谢你和ott--这里的参考是我的完整例子 …

c wireless sniffing pcap

1
推荐指数
1
解决办法
2267
查看次数