Initial
This commit is contained in:
92
proto/source/chatc.cpp
Normal file
92
proto/source/chatc.cpp
Normal file
@@ -0,0 +1,92 @@
|
||||
#include <socket/socket.hpp>
|
||||
#include <socket/wsadata.hpp>
|
||||
#include <socket/inaddr.hpp>
|
||||
#include <socket/hostent.hpp>
|
||||
#include <socket/servent.hpp>
|
||||
//#include <winsock2.h>
|
||||
|
||||
|
||||
#define SIO_GET_INTERFACE_LIST _IOR('t', 127, u_long) // <TBD>
|
||||
|
||||
typedef struct _INTERFACE_INFO
|
||||
{
|
||||
u_long iiFlags; /* Interface flags */
|
||||
struct sockaddr iiAddress; /* Interface address */
|
||||
struct sockaddr iiBroadcastAddress; /* Broadcast address */
|
||||
struct sockaddr iiNetmask; /* Network mask */
|
||||
} INTERFACE_INFO, FAR * LPINTERFACE_INFO;
|
||||
|
||||
void message(const String &message);
|
||||
|
||||
void main(void)
|
||||
{
|
||||
WSASystem wsaSystem;
|
||||
String hostName("li.net");
|
||||
HostEnt hostEntry;
|
||||
ServEnt serverEntry;
|
||||
InternetAddress internetAddress(hostName);
|
||||
INETSocketAddress inetSocketAddress;
|
||||
Socket ftpControl;
|
||||
|
||||
message(String("trying ")+hostName+String("..."));
|
||||
if(!internetAddress.isZero()){if(!hostEntry.hostByAddress(internetAddress)){message(String("no DNS entry for ")+hostName);return;}}
|
||||
else if(!hostEntry.hostByName(hostName)){message(String("no DNS entry for ")+hostName);return;}
|
||||
message(String("connect...")+String("'")+hostEntry.hostName()+String("' (")+(String)(hostEntry.addresses())[0]+String(")"));
|
||||
inetSocketAddress.internetAddress((hostEntry.addresses())[0]);
|
||||
if(!serverEntry.serviceByName("ftp","tcp")){message("cannot determine port number for ftp daemon.");return;}
|
||||
if(!ftpControl.openSocket()){message("unable to create socket.");return;}
|
||||
inetSocketAddress.family(PF_INET);
|
||||
inetSocketAddress.port(serverEntry.port());
|
||||
if(!ftpControl.connect(inetSocketAddress)){message("unable to connect to ftp daemon");return;}
|
||||
// if(!receive(mAckConnectionResponseStrings))return FALSE;
|
||||
ftpControl.getSocketName(inetSocketAddress);
|
||||
message(String("my IP address is..")+(String)inetSocketAddress.internetAddress());
|
||||
|
||||
|
||||
INETSocketAddress inetAddress;
|
||||
int length(sizeof(sockaddr_in));
|
||||
::getpeername(ftpControl,(sockaddr*)((sockaddr_in*)&inetAddress),&length);
|
||||
message((String)inetAddress.internetAddress());
|
||||
|
||||
// return mFTPControl.isConnected();
|
||||
|
||||
|
||||
// char bigBuff[256];
|
||||
// ::memset(bigBuff,0,sizeof(bigBuff));
|
||||
INTERFACE_INFO interfaceInfo;
|
||||
::memset(&interfaceInfo,0,sizeof(interfaceInfo));
|
||||
ioctlsocket(ftpControl,SIO_GET_INTERFACE_LIST,(ULONG*)&interfaceInfo);
|
||||
message("ioctl succeeded");
|
||||
INTERFACE_INFO *pI=&interfaceInfo;
|
||||
return;
|
||||
}
|
||||
|
||||
void message(const String &message)
|
||||
{
|
||||
::OutputDebugString(message+String("\n"));
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
WORD FTPClient::open(String hostName)
|
||||
{
|
||||
HostEnt hostEntry;
|
||||
ServEnt serverEntry;
|
||||
|
||||
message(String("trying ")+hostName+String("..."));
|
||||
if(!mWSASystem.isInitialized()){message("WINSOCK initialization failure.");return FALSE;}
|
||||
InternetAddress internetAddress(hostName);
|
||||
if(!internetAddress.isZero()){if(!hostEntry.hostByAddress(internetAddress)){message(String("no DNS entry for ")+hostName);return FALSE;}}
|
||||
else if(!hostEntry.hostByName(hostName)){message(String("no DNS entry for ")+hostName);return FALSE;}
|
||||
message(String("connect...")+String("'")+hostEntry.hostName()+String("' (")+(String)(hostEntry.addresses())[0]+String(")"));
|
||||
INETSocketAddress::internetAddress((hostEntry.addresses())[0]);
|
||||
if(!serverEntry.serviceByName("ftp","tcp")){message("cannot determine port number for ftp daemon.");return FALSE;}
|
||||
if(!mFTPControl.openSocket()){message("unable to create socket.");return FALSE;}
|
||||
INETSocketAddress::family(PF_INET);
|
||||
INETSocketAddress::port(serverEntry.port());
|
||||
if(!mFTPControl.connect((INETSocketAddress&)*this)){message("unable to connect to ftp daemon");return FALSE;}
|
||||
if(!receive(mAckConnectionResponseStrings))return FALSE;
|
||||
mFTPControl.getSocketName((INETSocketAddress&)*this);
|
||||
return mFTPControl.isConnected();
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user