<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[file transfer via winsock]]></title><description><![CDATA[<p>hi leute!<br />
ich arbeite gerade an einem prog mit dem ich file via winsock per tcp/ip protokoll verschicken kann...<br />
leider funzt da beim code was net!<br />
es kommt wohl beim client das file an, is auch gleich gross wie da orginal file aber wenn ich eine .rar oder .doc datei schick dann kann ich die nimmer öffnen wenn das file so ~400kb gross ist...<br />
was mach ich da falsch??</p>
<p>cu</p>
<pre><code class="language-cpp">#include &lt;winsock2.h&gt;
#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
#include &lt;iostream.h&gt;
#include &lt;string.h&gt;

#pragma comment( lib, &quot;ws2_32.lib&quot; )

typedef struct _NETFILEHEADER
{
    unsigned long FileSize;
    char pFileName[256];
} NETFILEHEADER;

long SendFileToNet(const char *pFileName,
                   const char *pIP,
                   unsigned short Port)
{
    FILE *pFile;
    unsigned long FileSize;
    char buffer[4096];
    NETFILEHEADER FileHeader;
    SOCKET sender;
    WSADATA wsa;
    SOCKADDR_IN addr;
    int addrlen = sizeof(SOCKADDR_IN);

    pFile = fopen(pFileName, &quot;rb&quot;);

    if(!pFile) return 0;

    fseek(pFile, 0, SEEK_END);
    FileSize = ftell(pFile);
    fseek(pFile, 0, SEEK_SET);

    FileHeader.FileSize = FileSize;
    memset(FileHeader.pFileName, 0, 256);
    memcpy(FileHeader.pFileName, pFileName, strlen(pFileName));

    WSAStartup(MAKEWORD(2,0),&amp;wsa);

    sender = socket(AF_INET, SOCK_STREAM, 0);

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(Port);
    addr.sin_addr.s_addr = inet_addr(pIP);

    connect(sender, (SOCKADDR*)&amp;addr, addrlen);

    send(sender, (char*)&amp;FileHeader, sizeof(NETFILEHEADER), 0);

    while(FileSize &gt;= 4096)
    {
        fread(buffer, 4096, 1, pFile);
        send(sender, buffer, 4096, 0);

        FileSize -= 4096;
    }

    if(FileSize)
    {
        fread(buffer, FileSize, 0, pFile);
        send(sender, buffer, FileSize, 0);
    }

    closesocket(sender);

    fclose(pFile);

    WSACleanup();

    return FileSize;
}

long GetFileFromNet(unsigned short Port)
{
    SOCKET server;
    SOCKET client;
    WSADATA wsa;
    SOCKADDR_IN addr;
    char buffer[4096];
    long rval;
    FILE *pFile;
    NETFILEHEADER FileHeader;
    long FileSize;

    int addrlen = sizeof(SOCKADDR_IN);

    WSAStartup(MAKEWORD(2,0),&amp;wsa);

    server = socket(AF_INET, SOCK_STREAM, 0);

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(Port);
    addr.sin_addr.s_addr = INADDR_ANY;
    bind(server, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR_IN));

    listen(server, 10);

    client = accept(server, (SOCKADDR*)&amp;addr, &amp;addrlen);

    recv(client, (char*)&amp;FileHeader, sizeof(NETFILEHEADER), 0);

    FileSize = FileHeader.FileSize;

    pFile = fopen(FileHeader.pFileName, &quot;wb&quot;);

    while(FileSize &gt; 0)
    {
        rval = recv(client, buffer, 4096, 0);
        fwrite(buffer, rval, 1, pFile);

        FileSize -= rval;
    }

    fclose(pFile);

    closesocket(client);
    closesocket(server);

    WSACleanup();

    return FileHeader.FileSize;
}

void main(void)
{
    SendFileToNet(&quot;testfile.txt&quot;, &quot;192.168.0.1&quot;, 80);
    //GetFileFromNet(80);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/79229/file-transfer-via-winsock</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 18:30:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/79229.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Jul 2004 00:09:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to file transfer via winsock on Fri, 09 Jul 2004 00:09:01 GMT]]></title><description><![CDATA[<p>hi leute!<br />
ich arbeite gerade an einem prog mit dem ich file via winsock per tcp/ip protokoll verschicken kann...<br />
leider funzt da beim code was net!<br />
es kommt wohl beim client das file an, is auch gleich gross wie da orginal file aber wenn ich eine .rar oder .doc datei schick dann kann ich die nimmer öffnen wenn das file so ~400kb gross ist...<br />
was mach ich da falsch??</p>
<p>cu</p>
<pre><code class="language-cpp">#include &lt;winsock2.h&gt;
#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
#include &lt;iostream.h&gt;
#include &lt;string.h&gt;

#pragma comment( lib, &quot;ws2_32.lib&quot; )

typedef struct _NETFILEHEADER
{
    unsigned long FileSize;
    char pFileName[256];
} NETFILEHEADER;

long SendFileToNet(const char *pFileName,
                   const char *pIP,
                   unsigned short Port)
{
    FILE *pFile;
    unsigned long FileSize;
    char buffer[4096];
    NETFILEHEADER FileHeader;
    SOCKET sender;
    WSADATA wsa;
    SOCKADDR_IN addr;
    int addrlen = sizeof(SOCKADDR_IN);

    pFile = fopen(pFileName, &quot;rb&quot;);

    if(!pFile) return 0;

    fseek(pFile, 0, SEEK_END);
    FileSize = ftell(pFile);
    fseek(pFile, 0, SEEK_SET);

    FileHeader.FileSize = FileSize;
    memset(FileHeader.pFileName, 0, 256);
    memcpy(FileHeader.pFileName, pFileName, strlen(pFileName));

    WSAStartup(MAKEWORD(2,0),&amp;wsa);

    sender = socket(AF_INET, SOCK_STREAM, 0);

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(Port);
    addr.sin_addr.s_addr = inet_addr(pIP);

    connect(sender, (SOCKADDR*)&amp;addr, addrlen);

    send(sender, (char*)&amp;FileHeader, sizeof(NETFILEHEADER), 0);

    while(FileSize &gt;= 4096)
    {
        fread(buffer, 4096, 1, pFile);
        send(sender, buffer, 4096, 0);

        FileSize -= 4096;
    }

    if(FileSize)
    {
        fread(buffer, FileSize, 0, pFile);
        send(sender, buffer, FileSize, 0);
    }

    closesocket(sender);

    fclose(pFile);

    WSACleanup();

    return FileSize;
}

long GetFileFromNet(unsigned short Port)
{
    SOCKET server;
    SOCKET client;
    WSADATA wsa;
    SOCKADDR_IN addr;
    char buffer[4096];
    long rval;
    FILE *pFile;
    NETFILEHEADER FileHeader;
    long FileSize;

    int addrlen = sizeof(SOCKADDR_IN);

    WSAStartup(MAKEWORD(2,0),&amp;wsa);

    server = socket(AF_INET, SOCK_STREAM, 0);

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(Port);
    addr.sin_addr.s_addr = INADDR_ANY;
    bind(server, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR_IN));

    listen(server, 10);

    client = accept(server, (SOCKADDR*)&amp;addr, &amp;addrlen);

    recv(client, (char*)&amp;FileHeader, sizeof(NETFILEHEADER), 0);

    FileSize = FileHeader.FileSize;

    pFile = fopen(FileHeader.pFileName, &quot;wb&quot;);

    while(FileSize &gt; 0)
    {
        rval = recv(client, buffer, 4096, 0);
        fwrite(buffer, rval, 1, pFile);

        FileSize -= rval;
    }

    fclose(pFile);

    closesocket(client);
    closesocket(server);

    WSACleanup();

    return FileHeader.FileSize;
}

void main(void)
{
    SendFileToNet(&quot;testfile.txt&quot;, &quot;192.168.0.1&quot;, 80);
    //GetFileFromNet(80);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/556497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556497</guid><dc:creator><![CDATA[james.]]></dc:creator><pubDate>Fri, 09 Jul 2004 00:09:01 GMT</pubDate></item></channel></rss>