liunx下高效率UDP TCP傳送RTP包

2021-10-10 06:14:10 字數 1977 閱讀 9213

sendmsg :對於傳送rtp包,sendmsg只能用在tcp傳送場景,如果udp也使用將導致所有rtp包被當成乙個udp包發出,見**1。

sendmmsg:可以一次傳送多個rtp包,且每個rtp包使用乙個udp包封裝。兩個函式都可以向sendto那樣無鏈結傳送,需要在struct msghdr結構體中將msg_name和msg_namelen填sendto最好兩個引數即可。建立連線效率會更高,見**2。

**1:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define max_seg 20

#define seg_size 1500 

#define pkg_num  10000*100

int 

main(void) 

char data[seg_size];

memset(data, 0xfe, sizeof(data));

struct iovec iovs[max_seg];

memset(iovs, 0, sizeof(iovs));

int i;

for (i = 0; i < max_seg; ++i) 

struct msghdr msg_hdr;

memset(&msg_hdr, 0, sizeof(msg_hdr));

msg_hdr.msg_iov = iovs;

msg_hdr.msg_iovlen = max_seg;

time_t start = times(0);

unsigned int send_num = 0;

while (1)//send_num < pkg_num)

send_num += max_seg;

}printf("use time:%u0ms\n", times(0)-start);

close(sockfd);

return 0;

}**2:

//#define _gnu_source

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define max_seg 20

#define seg_size 1500

#define pkg_num  10000*100

/*struct mmsghdr;*/

intmain(void)

struct iovec iovs[max_seg];

struct mmsghdr mmsg[max_seg];

bzero(&iovs, sizeof(iovs));

bzero(&mmsg, sizeof(mmsg));

char data[seg_size];

memset(data, 0xfe, sizeof(data));

int i;

for (i = 0; i < max_seg; ++i)

time_t start = times(0);

unsigned int send_num = 0;

while (1)//send_num < pkg_num)

send_num += max_seg;

}printf("use time:%u0ms\n", times(0)-start);

close(sockfd);

return 0;

}

高效率秘籍

高效率秘籍1 能量管理 假如今天透支身體數小時,下週你可能要為此償還更多的時間。良好的能量管理有兩步 1 增加你的能量儲備。2 將你的日程表由線性的改為迴圈式的。能量儲備 1 每週有3 5次運動嗎?如果你的回答為否,你正在削弱你的潛在能量水平,除非你的醫生不讓你參加運動,否則最少每天要抽出40分鐘來...

高效率生活

如何高效率生活 我們經常會想,為什麼我天天很努力的工作可是工作還是幹不完,如何才能高效率的工作和學習呢?我想這裡有過一些想法和經驗 經驗2 完成乙個事情再休息。因為人腦和電腦很像,乙個東西只有有了結果之後,再次回想時候才能有用,每個東西都要歸根到乙個節點上,乙個完結的點之後才能由這個點拓展開來,就和...

高效率java程式設計

1 考慮使用靜態工廠方法代替構構方法來例項化類。2 使用私用構構函式,使類具有不可例項化的能力。3 避免建立重複的物件 4 消除過期的物件的使用 5 避免使用終結函式 6 使類和成員的可訪問性最小 7 介面優先於抽象 8 為所有的引數進行有效性檢查 9 謹慎使用過載 10 使用0長度的陣列,而不是空...