⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataconnection.c

📁 linux先ftp客户端,实现文件上传下载,建立目录,实现互联网文件共享
💻 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 + -