当前位置: 技术问答>linux和unix
inetd使用中的一个问题
来源: 互联网 发布时间:2016-04-07
本文导语: 最近在学socket编程,在使用inetd的时候遇到一个小问题。 我把下面的代码编译成可执行程序hello,接着按照inetd的要求进行设置,设置是成功后,使用telnet进行连接,hello被执行。不过在telnet中输入的字符却无法被hello读...
最近在学socket编程,在使用inetd的时候遇到一个小问题。
我把下面的代码编译成可执行程序hello,接着按照inetd的要求进行设置,设置是成功后,使用telnet进行连接,hello被执行。不过在telnet中输入的字符却无法被hello读取,hello进入等待数据的循环。我怀疑是使用telnet的时候,stdin是被连接到终端上的,是不是终端属性没有设置正确?请各位大哥指教。(plus:hello在本地执行可以直接从stdin读取数据)
////////////////////////////////////////////////////////////////////////////////////////////////////
#include
#include
#include
char * cmds[] = { "help" , "say" , "hello" , "bye" , "exit" , NULL };
int getcmd( const char * cmd )
{
int n = 0;
while( cmds[ n ] != NULL )
{
if( strncasecmp( cmd ,cmds[ n ] , strlen( cmds[ n ] ) ) == 0 )
return n;
n++;
}
return -1;
}
void main( void )
{
char buf[ 1024 ];
int ok;
printf( "Welcome!This is hello service!n" );
fflush( stdout );
ok = 0;
do
{
while( fgets( buf , 1023 , stdin ) == NULL );
switch( getcmd( buf ) )
{
case -1:
{
printf( "Unknown command!n" );
break;
}
case 0 :
{
printf( "How may i help you , sir ?n" );
break;
}
case 1:
{
printf( "I will say %s" , &buf[ 3 ] );
break;
}
case 2:
{
printf( "How are you doing today?n " );
break;
}
case 3:
{
printf( "Si ya , mate!n" );
ok = 1;
break;
}
case 4:
{
printf( "Go ahead!n" );
ok = 1;
break;
}
}
}while( !ok );
}
我把下面的代码编译成可执行程序hello,接着按照inetd的要求进行设置,设置是成功后,使用telnet进行连接,hello被执行。不过在telnet中输入的字符却无法被hello读取,hello进入等待数据的循环。我怀疑是使用telnet的时候,stdin是被连接到终端上的,是不是终端属性没有设置正确?请各位大哥指教。(plus:hello在本地执行可以直接从stdin读取数据)
////////////////////////////////////////////////////////////////////////////////////////////////////
#include
#include
#include
char * cmds[] = { "help" , "say" , "hello" , "bye" , "exit" , NULL };
int getcmd( const char * cmd )
{
int n = 0;
while( cmds[ n ] != NULL )
{
if( strncasecmp( cmd ,cmds[ n ] , strlen( cmds[ n ] ) ) == 0 )
return n;
n++;
}
return -1;
}
void main( void )
{
char buf[ 1024 ];
int ok;
printf( "Welcome!This is hello service!n" );
fflush( stdout );
ok = 0;
do
{
while( fgets( buf , 1023 , stdin ) == NULL );
switch( getcmd( buf ) )
{
case -1:
{
printf( "Unknown command!n" );
break;
}
case 0 :
{
printf( "How may i help you , sir ?n" );
break;
}
case 1:
{
printf( "I will say %s" , &buf[ 3 ] );
break;
}
case 2:
{
printf( "How are you doing today?n " );
break;
}
case 3:
{
printf( "Si ya , mate!n" );
ok = 1;
break;
}
case 4:
{
printf( "Go ahead!n" );
ok = 1;
break;
}
}
}while( !ok );
}
|
这个程序我是测试过的,应该没有问题,你说说你的运行环境。