還有很多問題,等待更新吧,哎,凡事需要自己寫一遍,道理誰都懂;寫完再和別人的**對比。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define max 65536
void echo(int sockfd, int epollfd)
else
if (len == 0)
return;
}//send
printf("recv...\n");
if (send(sockfd, buf, len, 0) != len)
}void* run(void *arg)}}
return (void*)0;
}int main(void)
int reuse = 1;
setsockopt(listenfd, sol_socket, so_reuseaddr, &reuse, sizeof(reuse));
struct sockaddr_in listen_addr;
bzero(&listen_addr,sizeof(listen_addr));
listen_addr.sin_family = af_inet;
listen_addr.sin_addr.s_addr = htonl(inaddr_any);
listen_addr.sin_port = htons(12345);
if ( bind(listenfd, (struct sockaddr *)&listen_addr, sizeof(listen_addr)) < 0)
if (listen(listenfd,5) < 0)
//printf("listening... on ip , port %d\n",12345);
printf("listening... \n");
// i/o- multiplexing
int epollfd = epoll_create1(0);
if (epollfd < 0)
pthread_t pid;
if (pthread_create(&pid, null, run, (void *)&epollfd) < 0)
//accept
struct sockaddr_in cli_addr;
int len =sizeof(cli_addr);
int acceptfd;
int cnt = 0;
while (1)
else
}if (pthread_join(pid,null) < 0)
return
0;}
還有很多任務作沒做。。。
1. 壓力測試。。。
2. 其他各種測試。。。
3. 另,上訴**更改下可以測試epoll lt模式,其中如果資料沒有處理,會一直觸發。
頻分復用 時分復用和碼分復用
頻分復用 fdm 按頻率劃分的不同通道,使用者分到一定的頻帶後,在通訊過程中自始至終都占用這個頻帶,可見頻分復用的所有使用者在同樣的時間占用不同的頻寬資源 頻寬指頻率帶 時分復用 tdm 按時間劃分成不同的通道,每乙個時分復用的使用者在每乙個tdm幀中占用固定序列號的間隙,可見時分復用的所有使用者是...
頻分復用 時分復用和碼分復用
頻分復用 fdm 按頻率劃分的不同通道,使用者分到一定的頻帶後,在通訊過程中自始至終都占用這個頻帶,可見頻分復用的所有使用者在同樣的時間占用不同的頻寬資源 頻寬指頻率帶 時分復用 tdm 按時間劃分成不同的通道,每乙個時分復用的使用者在每乙個tdm幀中占用固定序列號的間隙,可見時分復用的所有使用者是...
傳輸層的復用和解復用
這兩個特殊的域別成為源埠號和目的埠號。每個埠號都是16位整數,從0 65535,其中0 1023是知名埠號,被一些熟知的應用占用 一般,客戶端應用讓傳輸層自動分配埠號,而伺服器端應用需要分配乙個指定的埠號。udp socket需要兩元組 目的主機ip位址和目的埠號 假定乙個程序在主機a中,使用udp...