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

📄 mtsclient.cpp

📁 无线网络TCP/IP客户端的程序设计
💻 CPP
字号:
/*
Author :- Nish [BusterBoy]
EMail :- nishinapp@yahoo.com
*/

#include "stdafx.h"
#include "MTSClient.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


CWinApp theApp;

int EndFile(char *buff, int len) ;
int NoFile(char *buff, int len) ;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	const char* servername="127.0.0.1";

	if(argc<2)
	{
		cout << "Usage :- mtsclient [file1] [file2] [file3] ....\r\n";
		return 0;
	}
	

	WSADATA wsaData;
	struct hostent *hp;
	unsigned int addr;
	struct sockaddr_in server;
	int wsaret=WSAStartup(0x101,&wsaData);
	if(wsaret)	
		return 0;
	SOCKET conn;
	conn=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	if(conn==INVALID_SOCKET)
		return 0;
		if(inet_addr(servername)==INADDR_NONE)
	{
		hp=gethostbyname(servername);
	}
	else
	{
		addr=inet_addr(servername);
		hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);
	}
	if(hp==NULL)
	{
		closesocket(conn);
		return 0;
	}
	server.sin_addr.s_addr=*((unsigned long*)hp->h_addr);
	server.sin_family=AF_INET;
	server.sin_port=htons(20248);
	if(connect(conn,(struct sockaddr*)&server,sizeof(server)))
	{
		closesocket(conn);
		return 0;	
	}
	char buff[512];
	int z;
	z=recv(conn,buff,512,0);
	buff[z]=0;
	
	strcpy(buff,"auth passwd\r\n");
	send(conn,buff,strlen(buff),0);
	
	z=recv(conn,buff,512,0);
	buff[z]=0;
	
	
	for(int j=1;j<argc;j++)
	{	
		sprintf(buff,"file %s\r\n",argv[j]);
		send(conn,buff,strlen(buff),0);
		
		CFile f;
		char *fname;
		char fname2[256];
		if(!(fname=strrchr(argv[j],'\\')))
			strcpy(fname2,argv[j]);
		else
			strcpy(fname2,fname+1);	
		
		f.Open(fname2,CFile::modeCreate | CFile::modeWrite);
		bool first=true;
		bool second=false;
		while(true)
		{		
			z=recv(conn,buff,128,0);
			if(z==SOCKET_ERROR)
			{
				cout << "\r\n\r\nsocket error socket error socket error\r\n";
				break;
			}	
			if(second)
			{
				if(NoFile(buff,128)<128)
				{
					cout << "File " << argv[j] << " not found on server\r\n";
					break;
				}
				second=false;
			}
			if(first)
			{
				if(NoFile(buff,128)<128)
				{
					cout << "File " << argv[j] << " not found on server\r\n";
					break;
				}
				first=false;
				second=true;
			}
			
			int b;
			if((b=EndFile(buff,z))<z)
			{		
				f.Write(buff,b);
				cout << fname2 << " has been saved.\r\n";
				break;
			}
			f.Write(buff,z);
		}	
		f.Close();
	}
	closesocket(conn);
	WSACleanup();
	return 0;
	
}


int EndFile(char *buff, int len) 
{
	int pos=len;
	for(int u=0;u<(len-4);u++)
	{
		if(buff[u]=='#')
			if(buff[u+1]=='F')
				if(buff[u+2]=='i')
					if(buff[u+3]=='l')
						if(buff[u+4]=='e')
						{
							pos=u;
							break;
						}
	}
	return pos;
}

int NoFile(char *buff, int len) 
{
	int pos=len;
	for(int u=0;u<(len-4);u++)
	{
		if(buff[u]=='!')
			if(buff[u+1]=='F')
				if(buff[u+2]=='i')
					if(buff[u+3]=='l')
						if(buff[u+4]=='e')
						{
							pos=u;
							break;
						}
	}
	return pos;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -