最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++傳輸文件到不同計算機上的示例代碼

 更新時間:2024年03月06日 11:57:13   作者:飛翔公園11223  
這篇文章主要為大家詳細(xì)介紹了c++傳輸文件到不同計算機上的相關(guān)知識,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

服務(wù)器端代碼(接收文件)

服務(wù)器端將監(jiān)聽一個端口,等待客戶端的連接,并接收客戶端發(fā)送的文件。

#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

#define PORT 8080
#define BUFFER_SIZE 4096

int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[BUFFER_SIZE] = {0};
std::ofstream outfile(“received_file”, std::ios::binary);

// 創(chuàng)建套接字
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
    perror("socket failed");
    exit(EXIT_FAILURE);
}

// 設(shè)置套接字選項
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
    perror("setsockopt");
    exit(EXIT_FAILURE);
}

address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);

// 綁定套接字到端口
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
    perror("bind failed");
    exit(EXIT_FAILURE);
}

// 監(jiān)聽端口
if (listen(server_fd, 3) < 0) {
    perror("listen");
    exit(EXIT_FAILURE);
}

// 接受客戶端連接
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
    perror("accept");
    exit(EXIT_FAILURE);
}

// 接收文件數(shù)據(jù)并寫入文件
int bytes_read;
while ((bytes_read = read(new_socket, buffer, BUFFER_SIZE)) > 0) {
    outfile.write(buffer, bytes_read);
}

std::cout << "File received successfully.\n";

// 關(guān)閉套接字和文件
outfile.close();
close(new_socket);
close(server_fd);

return 0;

客戶端代碼(發(fā)送文件)

客戶端將連接到服務(wù)器端的IP地址和端口,并發(fā)送一個文件。

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

#define PORT 8080
#define BUFFER_SIZE 4096

int main() {
int sock = 0;
struct sockaddr_in serv_addr;
char buffer[BUFFER_SIZE] = {0};
std::ifstream infile(“file_to_send”, std::ios::binary);

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
    std::cerr << "\n Socket creation error \n";
    return -1;
}

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);

// 將IPv4地址從文本轉(zhuǎn)換為二進制形式
if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
    std::cerr << "\nInvalid address/ Address not supported \n";
    return -1;
}

if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
    std::cerr << "\nConnection Failed \n";
    return -1;
}

// 讀取文件并發(fā)送
while (infile.read(buffer, BUFFER_SIZE)) {
    send(sock, buffer, infile.gcount(), 0);
}

// 發(fā)送文件的最后一部分(如果有)
if (infile.gcount() > 0) {
    send(sock, buffer, infile.gcount(), 0);
}

std::cout << "File sent successfully.\n";

// 關(guān)閉套接字和文件
infile.close();
close(sock);

return 0;
}

注意:

這些示例代碼假設(shè)服務(wù)器和客戶端都在同一網(wǎng)絡(luò)中,并且客戶端知道服務(wù)器的IP地址。

在實際部署時,你需要將客戶端代碼中的"127.0.0.1"替換為服務(wù)器的實際IP地址。

這些代碼示例僅用于教學(xué)目的,實際應(yīng)用中可能需要更多的錯誤處理和安全措施

到此這篇關(guān)于c++傳輸文件到不同計算機上的示例代碼的文章就介紹到這了,更多相關(guān)c++傳輸文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 智能指針的魅力你都了解嗎

    C++ 智能指針的魅力你都了解嗎

    智能指針使用和普通指針類似。解引用一個智能指針返回它指向的對象。如果在一個條件判斷中使用智能指針,效果就是檢測它是否為空,本文給大家介紹C++ 智能指針的相關(guān)知識,感興趣的朋友一起看看吧
    2021-06-06
  • C++中map和set封裝實現(xiàn)示例

    C++中map和set封裝實現(xiàn)示例

    我們知道,map與set所使用的都是紅黑樹,下面這篇文章主要給大家介紹了關(guān)于C++中map和set封裝實現(xiàn)的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • C語言算法練習(xí)之求二維數(shù)組最值問題

    C語言算法練習(xí)之求二維數(shù)組最值問題

    這篇文章主要為大家介紹了C語言算法練習(xí)中求二維數(shù)組最值的實現(xiàn)方法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下
    2022-09-09
  • Qt為exe添加ico圖片的簡單實現(xiàn)步驟

    Qt為exe添加ico圖片的簡單實現(xiàn)步驟

    這篇文章主要給大家介紹了關(guān)于Qt為exe添加ico圖片的簡單實現(xiàn)步驟,通過文中介紹的方法可以幫助大家實現(xiàn)這個自定義exe圖標(biāo)的效果,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • QT .pro文件的實現(xiàn)

    QT .pro文件的實現(xiàn)

    本文主要介紹了QT .pro文件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C語言如何解決約瑟夫環(huán)問題

    C語言如何解決約瑟夫環(huán)問題

    文章總結(jié)了四種解決特定問題的方法,包括單循環(huán)鏈表法、循環(huán)數(shù)組法、遞歸法和迭代法,并分享了個人經(jīng)驗
    2024-12-12
  • C語言?const修飾普通變量和指針的操作代碼

    C語言?const修飾普通變量和指針的操作代碼

    這篇文章主要介紹了C語言const修飾普通變量和指針,用const修飾普通變量時,是在語法層面限制了變量的修改,但是本質(zhì)上,變量還是變量,是一種不能被修改的變量,本文通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • C++實現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹)

    C++實現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 從c++標(biāo)準(zhǔn)庫指針萃取器談一下traits技法(推薦)

    從c++標(biāo)準(zhǔn)庫指針萃取器談一下traits技法(推薦)

    本篇文章基于gcc中標(biāo)準(zhǔn)庫源碼剖析一下標(biāo)準(zhǔn)庫中的模板類pointer_traits,并且以此為例理解一下traits技法,對c++ traits技法源碼分析感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • C語言正則表達式詳解 regcomp() regexec() regfree()用法詳解

    C語言正則表達式詳解 regcomp() regexec() regfree()用法詳解

    C語言處理正則表達式常用的函數(shù)有regcomp()、regexec()、regfree()和regerror(),這里就為大家介紹一下,需要的朋友可以參考一下啊
    2018-04-04

最新評論

邯郸县| 桂林市| 神农架林区| 固镇县| 凤凰县| 安义县| 澄城县| 札达县| 老河口市| 上饶市| 垦利县| 石河子市| 万宁市| 东安县| 喀喇沁旗| 沧源| 泽库县| 霍山县| 邵阳市| 禄劝| 高陵县| 郎溪县| 乐平市| 新绛县| 常山县| 河池市| 健康| 游戏| 东乡| 秭归县| 乐陵市| 香格里拉县| 红桥区| 武汉市| 南宫市| 洞口县| 镇沅| 化隆| 蒲江县| 醴陵市| 衡水市|