《Linux高性能服务器编程》高清pdf+附带源码
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜
文件 6148 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜.DS_Store
目录 0 2018-04-27 15:42 __MACOSX
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜
文件 120 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜._.DS_Store
目录 0 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes
文件 6148 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes.DS_Store
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes
文件 120 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes._.DS_Store
目录 0 2013-03-04 20:21 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9
文件 2100 2012-05-11 21:55 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-6mytalk_client.cpp
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9
文件 212 2012-05-11 21:55 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-6mytalk_client.cpp
文件 2736 2012-06-13 02:53 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-5unblockconnect.cpp
文件 212 2012-06-13 02:53 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-5unblockconnect.cpp
文件 4303 2013-03-04 20:18 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-8multi_port.cpp.bak
文件 212 2013-03-04 20:18 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-8multi_port.cpp.bak
文件 4400 2012-05-11 01:39 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-3mtlt.cpp
文件 212 2012-05-11 01:39 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-3mtlt.cpp
文件 4254 2013-03-04 20:21 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-8multi_port.cpp
文件 212 2013-03-04 20:21 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-8multi_port.cpp
文件 2515 2012-05-06 15:23 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-1use_select.cpp
文件 212 2012-05-06 15:23 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-1use_select.cpp
文件 5749 2012-05-12 01:50 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-7mytalk_server.cpp
文件 212 2012-05-12 01:50 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-7mytalk_server.cpp
文件 3899 2012-05-10 22:41 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-4oneshot.cpp
文件 212 2012-05-10 22:41 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-4oneshot.cpp
文件 212 2013-03-04 20:21 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes._9
目录 0 2013-01-18 19:15 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes11
文件 3657 2012-05-24 16:26 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes1111-2lst_timer.h
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes11
............此处省略143个文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX_EVENT_NUMBER 1024
static int pipefd[2];
int setnonblocking( int fd )
{
int old_option = fcntl( fd F_GETFL );
int new_option = old_option | O_NONBLOCK;
fcntl( fd F_SETFL new_option );
return old_option;
}
void addfd( int epollfd int fd )
{
epoll_event event;
event.data.fd = fd;
event.events = EPOLLIN | EPOLLET;
epoll_ctl( epollfd EPOLL_CTL_ADD fd &event );
setnonblocking( fd );
}
void sig_handler( int sig )
{
int save_errno = errno;
int msg = sig;
send( pipefd[1] ( char* )&msg 1 0 );
errno = save_errno;
}
void addsig( int sig )
{
struct sigaction sa;
memset( &sa ‘ ‘ sizeof( sa ) );
sa.sa_handler = sig_handler;
sa.sa_flags |= SA_RESTART;
sigfillset( &sa.sa_mask );
assert( sigaction( sig &sa NULL ) != -1 );
}
int main( int argc char* argv[] )
{
if( argc <= 2 )
{
printf( “usage: %s ip_address port_number
“ basename( argv[0] ) );
return 1;
}
const char* ip = argv[1];
int port = atoi( argv[2] );
int ret = 0;
struct sockaddr_in address;
bzero( &address sizeof( address ) );
address.sin_family = AF_INET;
inet_pton( AF_INET ip &address.sin_addr );
address.sin_port = htons( port );
int listenfd = socket( PF_INET SOCK_STREAM 0 );
assert( listenfd >= 0 );
//int nReuseAddr = 1;
//setsockopt( listenfd SOL_SOCKET SO_REUSEADDR &nReuseAddr sizeof( nReuseAddr ) );
ret = bind( listenfd ( struct sockaddr* )&address sizeof( address ) );
if( ret == -1 )
{
printf( “errno is %d
“ errno );
return 1;
}
//assert( ret != -1 );
ret = listen( listenfd 5 );
assert( ret != -1 );
epoll_event events[ MAX_EVENT_NUMBER ];
int epollfd = epoll_create( 5 );
assert( epollfd != -1 );
addfd( epollfd listenfd );
ret = socketpair( PF_UNIX SOCK_STREAM 0 pipefd );
assert( ret != -1 );
setnonblocking( pipefd[1] );
addfd( epollfd pipefd[0] );
// add all the interesting signals here
addsig( SIGHUP );
addsig( SIGCHLD );
addsig( SIGTERM );
addsig( SIGINT );
bool stop_server = false;
while( !stop_server )
{
int number = epoll_wait( epollfd events MAX_EVENT_NUMBER -1 );
if ( ( number < 0 ) && ( errno != EINTR ) )
{
printf( “epoll failure
“ );
break;
}
for ( int i = 0; i < number; i++ )
{
int sockfd = events[i].data.fd;
if( sockfd == listenfd )
{
struct sockaddr_in client_address;
socklen_t client_addrlength = sizeof( client_address );
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜
文件 6148 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜.DS_Store
目录 0 2018-04-27 15:42 __MACOSX
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜
文件 120 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜._.DS_Store
目录 0 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes
文件 6148 2018-04-27 15:42 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes.DS_Store
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes
文件 120 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes._.DS_Store
目录 0 2013-03-04 20:21 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9
文件 2100 2012-05-11 21:55 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-6mytalk_client.cpp
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9
文件 212 2012-05-11 21:55 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-6mytalk_client.cpp
文件 2736 2012-06-13 02:53 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-5unblockconnect.cpp
文件 212 2012-06-13 02:53 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-5unblockconnect.cpp
文件 4303 2013-03-04 20:18 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-8multi_port.cpp.bak
文件 212 2013-03-04 20:18 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-8multi_port.cpp.bak
文件 4400 2012-05-11 01:39 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-3mtlt.cpp
文件 212 2012-05-11 01:39 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-3mtlt.cpp
文件 4254 2013-03-04 20:21 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-8multi_port.cpp
文件 212 2013-03-04 20:21 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-8multi_port.cpp
文件 2515 2012-05-06 15:23 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-1use_select.cpp
文件 212 2012-05-06 15:23 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-1use_select.cpp
文件 5749 2012-05-12 01:50 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-7mytalk_server.cpp
文件 212 2012-05-12 01:50 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-7mytalk_server.cpp
文件 3899 2012-05-10 22:41 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes99-4oneshot.cpp
文件 212 2012-05-10 22:41 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes9._9-4oneshot.cpp
文件 212 2013-03-04 20:21 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes._9
目录 0 2013-01-18 19:15 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes11
文件 3657 2012-05-24 16:26 Linux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes1111-2lst_timer.h
目录 0 2018-04-27 15:42 __MACOSXLinux楂樻€ц兘鏈嶅姟鍣ㄧ紪绋嬫竻鏅癙DF+婧愮爜LinuxServerCodes11
............此处省略143个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)