欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

服務器端將監(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);
}

// 設置套接字選項
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";

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

return 0;

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

客戶端將連接到服務器端的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地址從文本轉換為二進制形式
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";

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

return 0;
}

注意:

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

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

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

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

相關文章

  • 純C++代碼詳解二叉樹相關操作

    純C++代碼詳解二叉樹相關操作

    二叉樹(Binary?tree)是樹形結構的一個重要類型。許多實際問題抽象出來的數(shù)據(jù)結構往往是二叉樹形式。本文將通過代碼為大家詳細講講C++二叉樹的一些常規(guī)操作,感興趣的可以學習一下
    2022-07-07
  • C語言實現(xiàn)學生管理系統(tǒng)總結

    C語言實現(xiàn)學生管理系統(tǒng)總結

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 淺析C++中的重載,隱藏和覆蓋

    淺析C++中的重載,隱藏和覆蓋

    在C++語言中,函數(shù)扮演著很重要的角色,不管面向過程設計,還是基于對象設計。本文主要為大家介紹了函數(shù)中重載、覆蓋和隱藏的相關知識,感興趣的小伙伴可以了解一下
    2022-12-12
  • C語言lidar_align雷達里程計校準功能詳解

    C語言lidar_align雷達里程計校準功能詳解

    這篇文章主要為大家介紹了C語言lidar_align雷達里程計校準功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 使用C語言操作文件的基本函數(shù)整理

    使用C語言操作文件的基本函數(shù)整理

    這篇文章主要介紹了使用C語言操作文件的基本函數(shù)整理,包括創(chuàng)建和打開以及關閉文件的操作方法,需要的朋友可以參考下
    2015-08-08
  • C/C++如何獲取當前系統(tǒng)時間的實例詳解

    C/C++如何獲取當前系統(tǒng)時間的實例詳解

    這篇文章主要介紹了 C/C++如何獲取當前系統(tǒng)時間的實例詳解的相關資料,這里提供了幾種實現(xiàn)方法,幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • 關于C語言 const 和 define 區(qū)別

    關于C語言 const 和 define 區(qū)別

    這篇文章主要介紹了關于C語言 const 和 define 區(qū)別 的相關資料,需要的朋友可以參考下面文章內容
    2021-09-09
  • 簡明的C++函數(shù)指針學習教程

    簡明的C++函數(shù)指針學習教程

    這篇文章主要介紹了C++函數(shù)指針的學習教程,講到了函數(shù)指針的定義及把指針作為函數(shù)參數(shù)進行傳遞的用法,需要的朋友可以參考下
    2016-04-04
  • C/C++中虛基類詳解及其作用介紹

    C/C++中虛基類詳解及其作用介紹

    這篇文章主要介紹了C/C++中虛基類的詳解及其作用介紹,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 簡單介紹C++中變量的引用

    簡單介紹C++中變量的引用

    這篇文章主要簡單介紹了C++中變量的引用,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09

最新評論