예제 #1
0
main ()
{
SOCKET LSock, CSock;
unsigned short usPort=80;
int Rc;
char szVer [128];

  Tcp4uVer (szVer, sizeof szVer);
  printf ("Using %s\n", szVer);

  /* --- prepare a listening connection */
  Tcp4uInit ();
  Rc = TcpGetListenSocket (& LSock, "http", & usPort, 1);
  if (Rc!=TCP4U_SUCCESS)
  {
     printf ("%s\n", Tcp4uErrorString(Rc));
     return 0;
  }
  /* --- now listen at port */
  Rc = TcpAccept (&CSock, LSock, 0);
  while (Rc>=TCP4U_SUCCESS)
  {
    /* now the application code. Note that you can fork or creat */
    /* a new thread in order to create a multi-user server       */
    /* --- in this app, we listen at the opened socket */
    Rc = TnReadLine (CSock, szBuf, sizeof szBuf, 60, HFILE_ERROR);
    if (Rc>=TCP4U_SUCCESS)  printf ("%s\n", szBuf);
  }
  TcpClose (& CSock);
  Tcp4uCleanup ();
return 0;
}  /* main */   
예제 #2
0
int main (int argc, char *argv[])
{
int Rc;
LPUDPSOCK lpSock=NULL;
char szVer [128];
int  nTries=0;
unsigned short nPort;

  if (argc<2)  Usage();
  if (argc==3  &&  strcmp (argv[1], "-v")==0)  Tcp4uEnableLog (LOG4U_DUMP);

  Tcp4uVer (szVer, sizeof szVer);   printf ("Using %s\n", szVer);
  Tcp4uInit();

  nPort = Udp4uServiceToPort ("echo");
  printf ("echo port is %u\n", nPort);

  Rc = UdpInit (& lpSock, argv[argc-1], nPort, 0);
  if (Rc>=TCP4U_SUCCESS) 
     Rc = UdpBind (lpSock, TRUE, UDP4U_CLIENT);
  
  if (Rc<TCP4U_SUCCESS) 
  {
    printf ("Error %d/%d: <%s>\n", Rc, errno, Tcp4uErrorString (Rc));
    return 0;
  }

  /* send 3 datagrams */
     nTries++;
     do
     {
        Rc = UdpSend (lpSock, STRING, sizeof STRING, 0, HLOG);
        if (Rc>=TCP4U_SUCCESS) 
           Rc= UdpRecv (lpSock, buf, sizeof buf, 5, HLOG);
        nTries++;
     }
     while (nTries <= 3 && Rc==TCP4U_TIMEOUT);

  if (Rc>=TCP4U_SUCCESS) 
       printf ("Server sends %d bytes. String <%s>\n", Rc, buf);
  else printf ("Error %d/%d: <%s>\n", Rc, errno, Tcp4uErrorString (Rc));

  if (lpSock!=NULL)   UdpCleanup (lpSock);
  Tcp4uCleanup();
return 0;
}
예제 #3
0
int main (void)
{
int    Rc;
char   szVer [128];
char   szName [289];
DWORD  dwIP;
unsigned char  *pIP = & dwIP;   /* How to display it */

   Tcp4uVer (szVer, sizeof szVer);
   printf ("Using %s\n", szVer);
   Tcp4uInit();
 
   Rc = TcpGetLocalID (szName, sizeof szName, & dwIP);
   printf ("This server is <%s>, Address %u.%u.%u.%u\n",
            szName,
            pIP[0], pIP[1], pIP[2], pIP[3]);

   Tcp4uCleanup();
return 0;
} /* main */
예제 #4
0
/* ------------------------------------------------------------- */
int _export PASCAL FAR FtpInit (HWND hParentWnd)
{
LPProcData         pProcData, pLast;
HWND               hFtpWnd;
int                Rc;
    
   if (ToolsLocateProcData () != NULL)  return FTPERR_SESSIONUSED;

   Rc=Tcp4uInit ();
   if (Rc!=TCP4U_SUCCESS)      return FTPERR_WINSOCKNOTUSABLE;  

   if (pFirstProcData==NULL || IsBadWritePtr(pFirstProcData, sizeof *pFirstProcData))
     {                  
       pProcData = pFirstProcData = Calloc (1, sizeof *pProcData);
       if (pProcData==NULL)  return FTPERR_INSMEMORY;
       pProcData->Next = pProcData->Prev = NULL;
     }
   else 
     {
       for ( pLast=pFirstProcData ; pLast->Next!=NULL ; pLast= pLast->Next );
       pLast->Next = pProcData = Calloc (1, sizeof *pProcData);
       if (pProcData==NULL)  return FTPERR_INSMEMORY;
       pProcData->Prev = pLast;
       pProcData->Next = NULL;
     }

   /* Get task information */      
   pProcData->hInstance       = GetTaskInstance (hParentWnd); /* port32.c */
   /* fIdentifyThread callback sur l'appelant, nThread sa valeur */
   pProcData->fIdentifyThread = GetCurrentThreadId;
   pProcData->nThreadIdent    = GetCurrentThreadId();


   /* est-ce que la fenetre interne a deja ete creee */
   if (pProcData==pFirstProcData)
   {WNDCLASS           wndClass;
	  /* lstrcpy (szFTPDLL_CLASSNAME, FTP4W_CLASS_NAME); */
	  /* EnregistreClasse : Enregistre la classe de notre fenêtre     */
	  memset (& wndClass, 0, sizeof wndClass); 
	  wndClass.lpszClassName = FTP4W_CLASS_NAME;
	  wndClass.hInstance     = pProcData->hInstance;
	  wndClass.lpfnWndProc   = (WNDPROC) DLLWndProc;
      Rc = RegisterClass (&wndClass);
	  if (! Rc)   { FtpRelease();   return FTPERR_CANTCREATEWINDOW; } 
	}
#ifdef UNE_FENETRE   
   if (pProcData==pFirstProcData)
   {
#endif   
     /* création de la fenêtre */    
      hFtpWnd=CreateWindow (FTP4W_CLASS_NAME,/* window class name        */
                          "", 0,             /* window title, style      */
                          0, 0, 0, 0,        /* x, y, cx, xy             */
                          hParentWnd,        /* a parent for this window */
                          NULL,              /* use the class menu       */
                          pProcData->hInstance, /* who created this wndw */
                          NULL  );           /* no parms to pass on      */
	  if (hFtpWnd==NULL)   
      {  
         FtpRelease ();
         return FTPERR_CANTCREATEWINDOW;
      }
	  pProcData->hFtpWnd         = hFtpWnd;          
#ifdef UNE_FENETRE   
   } /* pas d'instance deja cree -> creation de la fenetre interne */
	   /* si la fenetre interne existe, on la reutilise simplement */ 
   else
	   pProcData->hFtpWnd = pFirstProcData->hFtpWnd;
#endif

   /* On remplit les infos relatives à la tâche */  
   pProcData->hParentWnd      = hParentWnd;
   /* renseignements FTP : Pas de session existante */
   pProcData->ftp.ctrl_socket     = INVALID_SOCKET;
   pProcData->ftp.data_socket     = INVALID_SOCKET;
   /* juste pour noyer l'appel */
   pProcData->ftp.bVerbose        = Protection (); /* Protection rend FALSE */
   pProcData->ftp.nTimeOut        = FTP_DEFTIMEOUT;
   pProcData->ftp.hLogFile        = HFILE_ERROR;
   pProcData->ftp.bPassif         = FALSE;
   pProcData->ftp.nPort           = FTP_DEFCTRLPORT;
   /* renseignement fichier */
   pProcData->File.bAborted   = FALSE;
   pProcData->File.bNotify    = FALSE;
   pProcData->File.bAsyncMode = TRUE;
   pProcData->File.hf         = HFILE_ERROR;
   pProcData->File.nAsyncAlone= FTP_DEFASYNCALONE;
   pProcData->File.nAsyncMulti= FTP_DEFASYNCMULTI;
   pProcData->File.nDelay     = FTP_DEFDELAY;
return FTPERR_OK;
};  /* FtpInit */