1
Winsock으로 간단한 FTP 클라이언트를 코딩하려고합니다.Winsock에서 데이터를 전송하는 중 C++
using namespace std;
#include <iostream>
#include <cstring>
#include <cstdio>
#include <winsock.h>
#include <windows.h>
int main() {
const int MAX_TRIES = 10;
char * host = "localhost";
int port = 21;
char * userName = "b8_8780454";
char * pass = "test";
char * testFileSource = "C:\\Windows\\notepad.exe";
WSADATA WSAData;
SOCKADDR_IN server;
SOCKET sock;
WSAStartup(MAKEWORD(2,2), &WSAData);
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET) {
cout<<"fail";
return -1;
}
server.sin_family = PF_INET;
server.sin_port = htons(port);
server.sin_addr = *((struct in_addr *)gethostbyname(host)->h_addr);
memset(server.sin_zero,0,8);
int errorCode = connect(sock, (LPSOCKADDR)&server, sizeof(struct sockaddr));
int tries = 0;
while (errorCode == SOCKET_ERROR) {
if (tries >= MAX_TRIES) {
cout<<"fail 2";
return -1;
}
errorCode = connect(sock, (LPSOCKADDR)&server, sizeof(struct sockaddr));
tries++;
}
char serverMsg[2048];
Sleep(1000);
cout<<"Waiting for server response..."<<endl;
int r = recv(sock,serverMsg,2048,0);
serverMsg[r] = '\0';
cout<<endl<<endl<<"Server said: "<<endl<<serverMsg<<endl<<endl;
char userB[1024] = "USER ";
strcat(userB,userName);
cout<<"Sending... "<<userB<<endl;
cout<<"sended: "<<send(sock, userB, strlen(userB), 0)<<" bytes"<<endl;
Sleep(1000);
cout<<"Waiting for server response..."<<endl;
serverMsg[0] = '\0';
recv(sock,serverMsg,2048,0); // <-- program keeps lock here
cout<<endl<<endl<<"Server said: "<<endl<<serverMsg<<endl<<endl;
getchar();
return 0;
}
내가 전송이 제대로 작동하지 그럼에도 불구하고이> 0을 반환하지만 서버 측에서 내가이 클라이언트가 데이터를 전송 볼 수 있다고 생각 :
나는 다음과 같은 코드가 있습니다. 나는 어쩌면 i를 conection에 설정에 문제가 있다고 생각하지만, 내가 어떤 사이트를 확인하고하고 난이 어떤 프로그램을 인쇄하다 오류
을 잡을 수 없습니다입니다 ...
는 서버 응답을 기다리는 중
Server said:
220-FileZilla Server version 0.9.31 beta
220-written by Tim Kosse ([email protected])
220 Please visit http://sourceforge.net/projects/filezilla/
Sending... USER b8_8780454
sended: 15 bytes
Waiting for server response...
Server said:
421 Login time exceeded. Closing control connection.
by Tim Kosse ([email protected])
220 Please visit http://sourceforge.net/projects/filezilla/
내 FTP 서버에서이 클라이언트가 서버로 데이터를 보내는 것을 볼 수 없습니다. 어떤 단서?
나는 그것을보아야 만했다. 감사. –