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"

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记