欢迎来到传世资源网!
加载中...
正在加载,请耐心等待...
本站为收藏、学习站,如有侵权,请联系管理员删除!

基于CS的TCP文件传输程序设计

介绍 评论 失效链接反馈

本课程设计文件传输系统基于TCP/IP协议的C/S模式,在服务器和客户端分别以socket为中心进行编程,客户端和服务器端的界面分别是由文件发送模块和文件接收模块组成,实现多线程文件传输系统功能模块。客户端检查是否连接到服务器,在正确连接的情况下实现对文件的传输;服务器检查是否有客户端连接,在正确连接的情况下接受客户端发送的文件。

 while (true)
    {
        //创建套接字    
        SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));

        //获取服务器地址端口相关
        SOCKADDR_IN address;
        GetAddressBySocket(sock, address);
        cout << "IP: " << ::inet_ntoa(address.sin_addr) << "  PORT: " << ntohs(address.sin_port) << endl;

        //获取文件位置
        std::ifstream file;
        do
        {
            cout << "请输入文件名" << std::endl;
            std::string filename = "";
            cin >> filename;
            file.open(filename, std::ifstream::binary);
        } while (!file.is_open());

        //传输文件
        //发送完毕标志
        bool flag = true;
        for (int  i = 0; !file.eof();)
        {
            char buf[1024] = { '\0' };
            memset(buf, 0, sizeof(buf));
            file.read(buf, sizeof(buf) - 1);

            int n = file.gcount();
            int send_char_num= send(sock, buf, n, 0);
            if (send_char_num==0)
            {
                cout << "服务器已连接断开" << endl;
                flag = false;
                break;
            }
            if (send_char_num<0)
            {
                cout << "发生错误,我也不知道是啥错误^_^" << endl;
                flag = false;
                break;
            }
            i = send_char_num;
            cout << "已发送:" << i << "字节" << endl;
        }
        if (flag)
        {
            cout << "文件已发送完毕" << endl;
        }
        closesocket(sock);  //关闭套接字  
    }
    WSACleanup();  //终止使用 DLL    
    return 0;
}

下载声明:

本站资源均有第三方用户自行上传分享推荐,非本站自制,仅供玩家做交流学习之用!切勿用于商业用途!游戏作品版权归原作者享有,如有版权问题,请附带版权证明至邮件,本平台将应您的要求删除。
相关推荐:

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复