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 */
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; }
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 */
/* ------------------------------------------------------------- */ 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 */