AIMER_S 2019-06-25 15:52 采纳率: 0%
浏览 287

ftp服务器的问题c++语言

计网课程设计要做一个ftp服务器并用命令行进行连接和访问,
现在在连接的时候不知道为什么连接不上,服务器过一会儿就自动断开
图片说明
下面是代码

#include<io.h>
#include<string>
#include<iostream>
#include<vector>
#include<thread>
#include<WS2tcpip.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#pragma warning(disable : 4996)
int main()
{
    WORD sockVersion = MAKEWORD(2, 2);
    WSADATA data;
    if (WSAStartup(sockVersion, &data) != 0)
    {
        std::cout << "WSAStartup error" << std::endl;
        return 0;
    }

    SOCKET serverSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (INVALID_SOCKET == serverSock)
    {
        std::cout << "socket erroro" << std::endl;
        closesocket(serverSock);
        WSACleanup();
        return 0;
    }

    sockaddr_in cmd_port;
    cmd_port.sin_family = AF_INET;
    cmd_port.sin_port = htons(21);
    inet_pton(AF_INET, "127.0.0.1", &cmd_port.sin_addr);

    if (bind(serverSock, (SOCKADDR*)& cmd_port, sizeof(SOCKADDR)))
    {
        std::cout << "bind error" << std::endl;
        closesocket(serverSock);
        WSACleanup();
        return 0;
    }

    if (listen(serverSock, 5) == SOCKET_ERROR)
    {
        std::cout << "listen error" << std::endl;
        closesocket(serverSock);
        WSACleanup();
        return 0;
    }

    SOCKET userSock;//用户端socket信息
    sockaddr_in user_sockAddr;//用于accept函数,存放客户端的信息
    int addrlen = sizeof(user_sockAddr);

    while (true)
    {
        std::cout << "waiting to be connected..." << std::endl;
        userSock = accept(serverSock, (SOCKADDR*)& user_sockAddr, &addrlen);//接受用户端请求,返回一个套接字
        if (INVALID_SOCKET == userSock)
        {
            std::cout << "accept error." << std::endl;
            continue;
        }
        char user_ip[16];
        inet_ntop(AF_INET, &user_sockAddr.sin_addr, user_ip, sizeof(user_ip));
        std::cout << "接收到一个链接:" << user_ip << std::endl;

    }
}

望各位大触指教

  • 写回答

1条回答

  • 巇岩流云 2019-07-26 22:07
    关注

    因为客户端在**等待服务端响应**!请先搞清楚ftp的工作流程!比如这个这个

    另外客户端主动断开连接也会显示“远程主机断开连接”,但这是个本地化问题,原文是"remote host has disconected"

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?