游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1613|回复: 6

急!!!FTP客户端程序.请高手进来看看我的程序

[复制链接]

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2006-2-10 14:27:00 | 显示全部楼层 |阅读模式
第一个socket连接没问题
第二个socket连接一连就卡死了(在connect()调用时卡住)
我第二个连接换个端口号就不会卡死,要么报连接不上
就是这个端口会卡死

为什么?怎么解决?
关键是怎么解决,请尽量详细!!


#include<stdio.h>
#include <stdlib.h>
#include<winsock2.h>
#include<string.h>
#include<conio.h>
#pragma  comment(lib,"ws2_32.lib")

FILE *fp;
SOCKET client,upload;
WSADATA WSAData;
int WSAreturn;
int portnum;
char *sportnum;
struct hostent *hp;
char information[256];
char receive[256];
char username[32],password[32],cmd[128];
char servername[256];
char message[10000];
long result;

int xferData();


int RecvMessage(SOCKET *s)
{
        recv(*s,message,sizeof(message),0);

        printf("*******接收到的消息*******\n");
        printf("%s\n",message);
        return(0);
}

int connection(SOCKET *s,char* name,int port)
{
        sockaddr_in to;
       

        WSAreturn = WSAStartup(0x101,&WSAData);
        if(WSAreturn)
        {
        printf("发生一个未知错误!\n");
        return 0;
        }

        *s = socket(PF_INET,SOCK_STREAM,0);
        to.sin_family = AF_INET;

//         to.sin_addr.s_addr = inet_addr(name);
        if(hp = gethostbyname(name))
        {
                memcpy((char*)&to.sin_addr,hp->h_addr,hp->h_length);
        }
        else
        {
                printf("host unknown!");
                return(-1);
        }
        to.sin_port = htons(port);

        printf("正在连接...\n");
        result = connect(*s,(struct sockaddr *)&to,sizeof(to));      //第二个连接卡在这
        if(SOCKET_ERROR==result)
        {  
                // 连接失败  
                printf("对不起,无法连接到目标主机!\n");
                WSACleanup();  
                return -1;  
        }

        else
        {
                recv(*s,receive,sizeof(receive),0);
                printf("*******欢迎消息消息*******\n");
                printf("%s\n",receive);
                printf("***********结束*********\n");
        }
       
        return (0);
}

int xferData()
{
        char *temp1, *temp2;
        strcpy(username,"sybase");
        strcpy(cmd,"USER ");
        strcat(cmd,username);
        strcat(cmd,"\r\n");
        send(client,cmd,strlen(cmd),0);
        RecvMessage(&client);

        strcpy(password,"123456");
        strcpy(cmd,&quotASS ");
        strcat(cmd,password);
        strcat(cmd,"\r\n");
        send(client,cmd,strlen(cmd),0);
        RecvMessage(&client);


        strcpy(cmd,"PASV\r\n");
        send(client,cmd,strlen(cmd),0);
        recv(client,message,sizeof(message),0);
printf("* %s",message);               
        sportnum = strchr(message,',');
        sportnum = strchr((sportnum+1),',');
        sportnum = strchr((sportnum+1),',');
        sportnum = strchr((sportnum+1),',') + 1;
        temp1 = strchr(sportnum,')');
        temp1[0] = '\0';
        temp1 = strchr(sportnum,',');
        temp2 = temp1 + 1;
        temp1[0] = '\0';
        portnum = atoi(sportnum)*256 + atoi(temp2);

printf("* %s %s %d*\n",sportnum,temp2,portnum);

        connection(&upload,servername,portnum);          //第二个socket连接一连就卡死了
               
        strcpy(cmd,"LIST\r\n");
        send(client,cmd,strlen(cmd),0);
        RecvMessage(&client);
         RecvMessage(&upload);
       

closesocket(client);
closesocket(upload);
WSACleanup();
return(0);
}


void main()
{
//        printf("请输入要登陆的IP:");
//scanf("%s",&servername);
        strcpy(servername,"192.168.9.28");
//        connection1();
if(!connection(&client,servername,21))
        xferData();

getch();
}
[em7] [em7]

9

主题

50

帖子

60

积分

注册会员

Rank: 2

积分
60
QQ
发表于 2006-2-10 15:15:00 | 显示全部楼层

Re:急!!!FTP客户端程序.请高手进来看看我的程序

真不明白你有什么理由用socket函数写ftp客户端??这么简单的东西用MFC不可以吗?

CInternetSession+CFtpConnection+CFile
如果你不能在程序内用MFC的库,就用做个DLL给你的程序调用好了……

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
 楼主| 发表于 2006-2-10 15:26:00 | 显示全部楼层

Re:急!!!FTP客户端程序.请高手进来看看我的程序

lunix下

18

主题

631

帖子

660

积分

高级会员

Rank: 4

积分
660
发表于 2006-2-10 15:55:00 | 显示全部楼层

Re:急!!!FTP客户端程序.请高手进来看看我的程序

linux下?
可以用winsock么?

9

主题

50

帖子

60

积分

注册会员

Rank: 2

积分
60
QQ
发表于 2006-2-10 17:09:00 | 显示全部楼层

Re: Re:急!!!FTP客户端程序.请高手进来看看我的程序

zero0000: Re:急!!!FTP客户端程序.请高手进来看看我的程序

lunix下


你是说那些代码是linux下的??

linux下面也有winsock2.h、ws2_32.lib ???????? [em7]

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-2-12 01:45:00 | 显示全部楼层

Re:急!!!FTP客户端程序.请高手进来看看我的程序

无语

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2006-2-12 03:15:00 | 显示全部楼层

Re:急!!!FTP客户端程序.请高手进来看看我的程序

别告诉我服务器端是阻塞的,哈哈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 10:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表