Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Hur man skriver en enkel konsol File Transfer Program Socket

    Skapa ett enkelt uttag program som överför en fil mellan två servrar är ett bra sätt att utöka dina kunskaper om socket programmering . En socket binder till en specifik port och ansluter till ett annat uttag för att skapa en dubbelriktad anslutning . Om du vill skicka en fil måste du skapa en socket , binder det , lyssna efter en anslutning , acceptera en anslutning och sedan skicka den till den andra servern - med " sendfile " funktionen . Instruktioner
    1

    Öppna din C filen med valfri integrerad utvecklingsmiljö .
    2

    Inkludera huvudfilerna få tillgång till alla nödvändiga datatyper och funktioner , genom att lägga till följande kod på toppen av din fil :

    # include # include # include # include # include < sys /sendfile.h > # include include # include # include # include # include < stdio . h > # include
    3

    Deklarera och initiera variabler som krävs för filöverföring uttaget , genom att lägga till följande kod på toppen av din huvudsakliga funktion :

    int port = 4455 ; int sock_fd , int sock_desc , int file_fd ; struct stat stat_buf , off_t file_offset = 0; char filnamn [ PATH_MAX ] ; struct addrinfo addr , * rs ; struct sockaddr_in addr1 , int addrlen ;

    strcpy ( filnamn , " minfil.txt " ) ;
    4

    initiera adress structs , genom att lägga till följande kod :

    memset ( & addr , 0 , sizeof addr ) ; addr.ai_family = AF_UNSPEC , addr.ai_socktype = SOCK_STREAM , addr.ai_flags = AI_PASSIVE ;

    getaddrinfo ( NULL , hamn , & addr , & rs ) ;
    5

    Skapa en ny socket , binder uttaget och ställ in den för att lyssna efter inkommande anslutningar , genom att lägga till följande kod :

    sock_fd = socket ( RS - > ai_family , RS - > ai_socktype , rs - > ai_protocol ) , bind ( sockfd , RS - > ai_addr , RS - > ai_addrlen ) , lyssna ( sock_fd , 1 ) ;
    6

    Skapa en " tag " loop och vänta för en inkommande anslutning , genom att skriva följande kod :

    while ( true ) { sock_desc = accepterar ( sock_fd , ( struct sockaddr * ) & addr1 , & addrlen ) ,
    7

    Öppna den fil du vill överföra och skicka det med " sendfile " -funktion , genom att lägga till följande kod :

    file_fd = open ( filnamn , O_RDONLY ) ; fstat ( file_fd , & stat_buf ) ;

    file_offset = 0; sendfile ( sock_desc , file_fd , & file_offset , stat_buf.st_size ) ;
    8

    Stäng filen , socket deskriptor och uttaget när du är klar skickar fil , genom att lägga till följande kod :

    close ( file_fd ) , close ( sock_desc ) ;}

    close ( sock_fd ) ,
    9

    Spara källfilen . Kompilera och kör programmet för att skicka en fil med en socket .

    Tidigare:

    nästa:
    relaterade artiklar
    ·Så lägger heltal i stigande ordning med C + +
    ·Hur man använder Visual C + + Express
    ·Hur du använder 2D-objekt i CPP
    ·Hur du uppdaterar rutnätsdata
    ·Hur man skriver ett fall uttalande i C + +
    ·Hur man gör en Asterisk rymdmönstret i C + +
    ·Vad är Microsoft Visual Studio 6.0
    ·Hur byta namn NIB XIB i Xcode
    ·Hur man skapar en dubbelt - länkad lista i C-programme…
    ·Vad är vikten av att lära C Språk
    Utvalda artiklarna
    ·Hur få produkten av en Array i C + +
    ·Hur man skapar en SQL- sträng i VB.NET
    ·Hur man beräknar en löpande balans med MySQL
    ·Beskrivning av VB6 Project Files
    ·Opacitet Effekter i MooTools
    ·Site Fel : Filen Kräver ionCube PHP Loader I /O
    ·Hur man installerar pärlor från kommandoraden i Ruby
    ·Lär dig Java Online
    ·Hur du skapar din egen Carousel i PHP
    ·Syntaxfel i SQL-satser
    Copyright © Dator Kunskap http://www.dator.xyz