资源简介

Socket实现文件上传下载,包含服务器和客户端实现,服务店采用多线程实现

资源截图

代码片段和文件信息

#include 
#include  //windows socket的头文件
#include 
#include 
#include 
#include 

#pragma comment(lib “ws2_32.lib“) //连接winsock2.h的静态库文件

using namespace std;

int main()
{
    //加载winsock库
    WSADATA wsadata;
    WSAStartup(MAKEWORD(2 3) &wsadata);

    //客户端socket
    SOCKET clientSock = socket(PF_INET SOCK_STREAM 0);
    //初始化socket信息
    sockaddr_in clientAddr;
    memset(&clientAddr 0 sizeof(SOCKADDR));
    //clientAddr.sin_addr.s_addr = htonl(INADDR_ANY);
    clientAddr.sin_addr.s_addr = inet_addr(“127.0.0.1“);
    clientAddr.sin_family = PF_INET;
    clientAddr.sin_port = htons(2017);
    //建立连接
    int net = connect(clientSock (SOCKADDR*)&clientAddr sizeof(SOCKADDR));

    if (net == -1)
    {
        cout << “连接失败,请检查服务器。“ << endl;
        return -1;
    }else{
        cout << “已建立连接。“ << endl;
    }


    /*
    char* s = new char[100];
    cout << “请输入你要发送的文字消息: “;
    cin >> s;
    send(clientSock s strlen(s)*sizeof(char) + 1 NULL);
    cout << “已发送:“ << s << endl;
    */

    char Buffer[MAXBYTE] = { 0 }; // 文件缓冲区
    char* wb_file = “D:\\111.GTB4“; //写入的文件

    FILE *fp = fopen(wb_file “wb“);
    if (fp == NULL)
    {
        cout << “操作文件时出错“ << endl;
        system(“pause“);
    }
    else
    {
        memset(&Buffer 0 MAXBYTE);
        int size = 0;
        //当成功接收文件(size > 0)时,判断写入的时候文件长度是否等于接收的长度
        while ((size = recvfrom(clientSock Buffer MAXBYTE 0 0 0)))
        {
            cout << size << endl;
            if (size > 0)
            {
                if (fwrite(Buffer sizeof(char) size fp) < size)
                {
                    cout << “写入出错,部分文件缺失。“ << endl;
                }
                //清空缓存区以便下一次接收
                memset(&Buffer 0 MAXBYTE);
            } else if ((0 == size) || (-1 == size))
            {
                break;
            }

        }
        cout << “接收完成“ << endl;
        fclose(fp);
    }

    closesocket(clientSock);
    WSACleanup();

    cout << “客户端连接已关闭。“ << endl;
    system(“pause“);

    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      32256  2018-11-16 16:26  SocketDemo\Client\64D\debug\Client.exe

     文件        638  2018-11-16 16:26  SocketDemo\Client\64D\debug\Client.exe.embed.manifest

     文件        100  2018-11-16 16:26  SocketDemo\Client\64D\debug\Client.exe_manifest.rc

     文件        704  2018-11-16 01:15  SocketDemo\Client\64D\debug\Client.exe_manifest.res

     文件     677896  2018-11-16 16:26  SocketDemo\Client\64D\debug\Client.ilk

     文件    1028096  2018-11-16 16:26  SocketDemo\Client\64D\debug\client.pdb

     文件      89043  2018-11-16 16:26  SocketDemo\Client\64D\debug\main.obj

     文件      23909  2018-11-16 01:30  SocketDemo\Client\64D\Makefile

     文件      19065  2018-11-16 01:30  SocketDemo\Client\64D\Makefile.Debug

     文件      18120  2018-11-16 01:30  SocketDemo\Client\64D\Makefile.Release

     文件        907  2018-11-16 01:21  SocketDemo\Client\Client.pro

     文件      23965  2018-11-16 16:33  SocketDemo\Client\Client.pro.user

     文件       2339  2018-11-16 16:25  SocketDemo\Client\main.cpp

     文件     120181  2018-11-16 15:18  SocketDemo\Server\64D\debug\main.obj

     文件      51712  2018-11-16 15:18  SocketDemo\Server\64D\debug\Server.exe

     文件        638  2018-11-16 15:18  SocketDemo\Server\64D\debug\Server.exe.embed.manifest

     文件        100  2018-11-16 15:18  SocketDemo\Server\64D\debug\Server.exe_manifest.rc

     文件        704  2018-11-16 01:14  SocketDemo\Server\64D\debug\Server.exe_manifest.res

     文件     728032  2018-11-16 15:18  SocketDemo\Server\64D\debug\Server.ilk

     文件    1118208  2018-11-16 15:18  SocketDemo\Server\64D\debug\server.pdb

     文件      23909  2018-11-16 01:17  SocketDemo\Server\64D\Makefile

     文件      19065  2018-11-16 01:17  SocketDemo\Server\64D\Makefile.Debug

     文件      18120  2018-11-16 01:17  SocketDemo\Server\64D\Makefile.Release

     文件       4067  2018-11-16 09:30  SocketDemo\Server\main.cpp

     文件        907  2018-11-16 01:13  SocketDemo\Server\Server.pro

     文件      23965  2018-11-16 19:28  SocketDemo\Server\Server.pro.user

     目录          0  2018-11-16 16:26  SocketDemo\Client\64D\debug

     目录          0  2018-11-16 01:15  SocketDemo\Client\64D\release

     目录          0  2018-11-16 15:18  SocketDemo\Server\64D\debug

     目录          0  2018-11-16 01:14  SocketDemo\Server\64D\release

............此处省略8个文件信息

评论

共有 条评论