📄 dataconnection.c
字号:
#include "MyFtpSvr.h"
int PasvDataConnection_Create(int sockControl)
{
int sockSvr;
int sockData;
char *IpAdd;
char szSvrMsg[128]="227 Entering Passive Mode (";
int iLen,iLoop;
struct sockaddr_in svrAdd={0};
socklen_t namelen;
namelen=sizeof(svrAdd);
sockSvr=TcpSvrInit(0);
if(getsockname(sockSvr,(struct sockaddr *)&svrAdd,&namelen)<0)
{
perror("getsockname");
return -1;
}
IpAdd=inet_ntoa(svrAdd.sin_addr);
iLen=strlen(IpAdd);
for(iLoop=0;iLoop<iLen;iLoop++)
{
if(IpAdd[iLoop]=='.')
IpAdd[iLoop]=',';
}
strcat(szSvrMsg,IpAdd);
strcat(szSvrMsg,",");
PortToStr(szSvrMsg,ntohs(svrAdd.sin_port));
Send(sockControl,szSvrMsg,strlen(szSvrMsg),0);
sockData=accept(sockSvr,NULL,NULL);
close(sockSvr);
return sockData;
}
void DataConnection_Close(int sockData)
{
close(sockData);
}
int PortDataConnection_Create(int iCliPort,char *IpAdd)
{
struct sockaddr_in addrSvr={0};
int sockData;
sockData=socket(AF_INET,SOCK_STREAM,0);
addrSvr.sin_family=AF_INET;
addrSvr.sin_port=htons(iCliPort);
addrSvr.sin_addr.s_addr=inet_addr(IpAdd);
if(connect(sockData,(struct sockaddr *)&addrSvr,
sizeof(addrSvr))==-1)
{
perror("connect faild");
exit(1);
}
return sockData;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -