加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

使用JRTPLIB库时出现Can't retrieve login name错误

(2008-07-01 14:20:40)
标签:

jrtplib

杂谈

分类: 其他技术文章

错误提示如下:

root:/tmp> ./bf537_send 192.168.10.226 9000

Destination IP Address:192.168.10.226

Destination Port:9000

How many packets you want to send?

2

check if Create Session error

ERROR:Can't retrieve login name

root:/tmp>

 

原因及解决方法如下:

  板子上的文件系统不需要用户名就可以直接登录,而在JRTPLIB库中的RTPSession中的

Create->InternalCreate->CreateCNAME中,有对用户名进行一定操作,

其中的getlogin_r(),getlogin()和getenv()操作都会因为用户名为空,

而返回错误ERR_RTP_SESSION_CANTGETLOGINNAME。

  我们可以通过修改JRTPLIB库(我所使用的版本号为3.7.1)的CreateCNAME源代码来为系统默认设置一个用户名。

在RTPSession.cpp的第1400行左右,找到:

if (!gotlogin)                                                                 

                                                                        

  char *logname = getenv("LOGNAME");                                      

  if (logname = = 0)                                                         

    return ERR_RTP_SESSION_CANTGETLOGINNAME;                     

  strncpy((char *)buffer,logname,*bufferlength);                                 

                                                                         

将其修改为:

if (!gotlogin)                                                                

                                                                         

  char *logname = getenv( "LOGNAME" );                                      

  if( 0 = = logname )                                                        

                                                                      

    printf( "Can't getenv LOGNAME, we will use \"root\" instead\n" );             

    strncpy( ( char * )buffer, "root", *bufferlength );                            

                                                                      

  else                                                                   

                                                                       

    strncpy( ( char * )buffer, logname, *bufferlength );                          

                                                                      

                             

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有