C,C++網絡編程實現圖像實時傳輸

導師讓我把項目裏OpenGl生成的圖片通過UDP網絡編程實時傳輸到電腦另一端,從一點不瞭解到實現圖片單張傳輸,再到最後用TCP編程實現多張圖片實時傳輸;沒有能達到老師的要求,用UDP實現多張圖片傳輸,這裏有個問題,就是UDP傳輸文件最大智能傳輸六十多KB,傳輸成百上千張幾百kb圖片有難度,待以後完善。網上請教了別人最後找到了解決方案:

 

基於winsock API,比較實用,自己寫的,簡單又粗暴同時還有技巧~這樣包裝的目的顯而易見,防止send或者 recv不完整,這樣你想發一個幾MB直接調用下面方法就okay,不會少發~

 

bool SendAll(SOCKET &sock, char*buffer, int size)
{
    while (size>0)
    {
        int SendSize= send(sock, buffer, size, 0);
        if(SOCKET_ERROR==SendSize)
            return false;
        size = size - SendSize;//用於循環發送且退出功能
        buffer+=SendSize;//用於計算已發buffer的偏移量
    }
    return true;
}

bool RecvAll(SOCKET &sock, char*buffer, int size)
{
    while (size>0)//剩餘部分大於0
    {
        int RecvSize= recv(sock, buffer, size, 0);
        if(SOCKET_ERROR==RecvSize)
            return false;
        size = size - RecvSize;
        buffer+=RecvSize;
    }
    return true;
 }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章