📄 ftp-server.cpp
字号:
// $Id: ftp-server.cpp 78634 2007-06-28 14:14:06Z johnnyw $// Simple file transfer example#include "ace/OS_NS_stdio.h"#include "ace/Thread_Manager.h"#include "ace/TLI_Acceptor.h"ACE_RCSID(TLI_SAP, ftp_server, "$Id: ftp-server.cpp 78634 2007-06-28 14:14:06Z johnnyw $")#if defined (ACE_HAS_THREADS) && defined (ACE_HAS_TLI)ACE_Thread_Manager thr_mgr;void *read_file (void *fd){ ACE_TLI_Stream stream; char buf[BUFSIZ]; int flags = 0; ssize_t n; // Cast the arg to a long, first, because a pointer is the same size // as a long on all current ACE platforms. stream.set_handle ((int) (long) fd); ACE_DEBUG((LM_DEBUG, "start (tid = %t, fd = %d)\n", stream.get_handle ())); while ((n = stream.recv (buf, sizeof buf, &flags)) > 0) continue; ACE_UNUSED_ARG (n); ACE_DEBUG ((LM_DEBUG,"finish (tid = %t, fd = %d)\n", stream.get_handle ())); if (stream.close () == -1) ACE_OS::t_error ("stream.close error"); return 0;}intACE_TMAIN (int argc, ACE_TCHAR *argv[]){ u_short port = argc > 1 ? ACE_OS::atoi (argv[1]) : ACE_DEFAULT_SERVER_PORT; ACE_TLI_Acceptor server; ACE_TLI_Stream new_stream; // Open the server and reuse the address if in use... if (server.open (ACE_INET_Addr (port), 1) == -1) ACE_OS::t_error ("server.open"), ACE_OS::exit (1); // Wait for a connection from a client. This is an example of a // concurrent server. for (int count = 1; ; count++) { ACE_DEBUG ((LM_DEBUG, "thread %t, blocking for accept #%d\n", count)); if (server.accept (new_stream) == -1) ACE_OS::t_error ("server.accept error"); else if (thr_mgr.spawn (ACE_THR_FUNC (read_file), (void *) new_stream.get_handle (), THR_DETACHED | THR_BOUND) == -1) ACE_OS::perror ("can't create worker thread\n"); } ACE_NOTREACHED (return 0);}#else#include <stdio.h>int ACE_TMAIN (int, ACE_TCHAR *[]){ ACE_ERROR_RETURN ((LM_ERROR, "your platform isn't configured to support TLI\n"), 1);}#endif /* ACE_HAS_THREADS */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -