ファイル機能をアップロードする ftp クライアントを作成しようとしています。しかし、サーバーとの接続が確立されていても、ソケットはサーバーにメッセージを送信していません。以下のコードを参照してください
#include <iostream>
#include <string>
#include <tchar.h>
#include <Winsock2.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,wchar_t * argv[])
{
WSADATA wsaData = {0};
int iResult = 0;
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0)
{
wprintf(L"WSAStartup failed: %d\n", iResult);
return 1;
}
SOCKET sock= socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sock == INVALID_SOCKET)
wprintf(L"socket function failed with error = %d\n", WSAGetLastError() );
else
std::wcout << " Success occured in socket creation " << std::endl ;
SOCKADDR_IN sock_Addr={0};
sock_Addr.sin_family=AF_INET;
sock_Addr.sin_port=htons(21);
sock_Addr.sin_addr.S_un.S_addr=inet_addr("10.0.0.105");
char recv_Buf[1000]={'\0'};
if(connect(sock,(SOCKADDR *)&sock_Addr,sizeof(SOCKADDR_IN)) != 0)
std::cout << " Error in connection " << std::endl ;
else
{
std::string tmp;
u_long mode =1; // non blocking socket
ioctlsocket(sock,FIONBIO,&mode);
int result = recv(sock,recv_Buf,sizeof(recv_Buf),0);
while( result > 0 )
{
tmp=tmp+recv_Buf;
result = recv(sock,recv_Buf,sizeof(recv_Buf),0);
}
std::cout << "connection - success - " << tmp << std::endl ;
}
ioctlsocket(sock,FIONBIO,0);
std::string buf="USER administrator";
if(send(sock,buf.c_str(),buf.size(),0)== SOCKET_ERROR)
std::cout << " sending user - error " << WSAGetLastError() << std::endl ;
else
{
std::string tmp;
u_long mode =1; // non blocking socket
ioctlsocket(sock,FIONBIO,&mode);
int result = recv(sock,recv_Buf,sizeof(recv_Buf),0);
while( result > 0 )
{
tmp=tmp+recv_Buf;
result = recv(sock,recv_Buf,sizeof(recv_Buf),0);
std::cout << "received " << recv_Buf << std::endl ;
}
std::cout << "user - success - " << tmp << std::endl ;
}
}
注:これを確認するには、 filezillaを使用しています。着信接続とコマンドが表示されます。ですから、誰かがこの問題で私を導いてくれたら、私はあなたに感謝します.
編集 以下はクライアント側(私の側)のコマンドプロンプトの結果です
ソケットの作成に成功しました
接続 - 成功 - 220-FileZilla Server バージョン 0.9.37 ベータ版
220-Tim Kosse 著 (Tim.Kosse@gmx.de)
220 http://sourceforge.net/projects/filezilla/にアクセスしてください。
ユーザー - 成功 -
何かキーを押すと続行します 。. .
これはサーバー側で表示されました
(000007)5/17/2011 23:32:02 PM - (ログインしていません) (10.0.0.105)> 接続され、ウェルカム メッセージを送信しています...
(000007)5/17/2011 23:32:02 PM - (ログインしていない) (10.0.0.105)> 220-FileZilla Server バージョン 0.9.37 ベータ
(000007)5/17/2011 23:32:02 PM - (ログインしていない) (10.0.0.105)> 220-Tim Kosse 著 (Tim.Kosse@gmx.de)
(000007)5/17/2011 23:32:02 PM - (ログインしていない) (10.0.0.105)> 220 http://sourceforge.net/projects/filezilla/にアクセスしてください
(000007)5/17/2011 23:32:02 PM - (ログインしていません) (10.0.0.105)> 切断されました。