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

c++傳輸文件到不同計(jì)算機(jī)上的示例代碼

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

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

服務(wù)器端將監(jiān)聽一個(gè)端口,等待客戶端的連接,并接收客戶端發(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è)置套接字選項(xiàng)
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ā)送一個(gè)文件。

#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)換為二進(jì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地址。

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

尉犁县| 内丘县| 江永县| 齐齐哈尔市| 于田县| 唐山市| 海南省| 大宁县| 泌阳县| 大英县| 乌海市| 襄城县| 聊城市| 合阳县| 特克斯县| 丽江市| 安国市| 榆树市| 鄂尔多斯市| 延川县| 林周县| 波密县| 会泽县| 罗定市| 芦溪县| 金湖县| 甘孜| 九龙城区| 扎赉特旗| 阿图什市| 泾源县| 巴楚县| 宜阳县| 台中市| 祁门县| 广平县| 南雄市| 台湾省| 江阴市| 奉节县| 五寨县|