亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯? [打印本頁]

作者: lqtnet    時間: 2004-07-15 15:42
標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯?
請教各位,最近遇到郁悶的問題。 在sco 5.05運行正常的通訊程序移植到linux上就出現(xiàn)錯誤。
源碼片斷:
int start_accept( int sock, struct sockaddr  *p_sin )
{
    int len;
    int clisock;
    if ( ( clisock = accept( sock, p_sin , &len ) ) == -1 )
    {
        commlog( "accept error %s", strerror( errno ) );
        return FALSE;
    }
    return clisock;
}
在linux下報錯:
accept error Invalid argument
是什么參數(shù)不對呢?
作者: lenovo    時間: 2004-07-15 15:48
標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯?
>;>;accept( sock, p_sin , &len )
看看linux上第三個參數(shù)的原型是什么。
還有你的len怎么沒有賦值?
對自己負(fù)責(zé)些好不好?
作者: lqtnet    時間: 2004-07-15 15:59
標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯?
:) 還是謝謝斑竹。我先改過來看看。
作者: lqtnet    時間: 2004-07-15 16:19
標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯?
accept 的參數(shù)最后一個是返回值吧。
int   accept(int   s,  struct  sockaddr  *addr,  socklen_t   *addrlen);

The addrlen argument
       is a value-result parameter: it should  initially  contain
       the size of the structure pointed to by addr;

應(yīng)該傳一個地址進去啊。是不用賦值的。 :(
還有什么原因呢?
作者: lenovo    時間: 2004-07-15 16:26
標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯?
》》int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
你看看你的len是什么類型?
服了你了。
還有你傳進來的參數(shù)一定保證有效嘛?
作者: soloarrow    時間: 2004-07-15 16:34
標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯?
》應(yīng)該傳一個地址進去啊。是不用賦值的。 :(

聯(lián)想老大已經(jīng)告訴你原因叻,好歹試一下,再man一下誒。
linux下man的具體內(nèi)容我記不得了,但是aix上man里面有個示例片斷:

fromlen        = sizeof(from);

newsock        = accept(socket, (struct sockaddr*)&from, &fromlen);

>;>;看看linux上第三個參數(shù)的原型是什么。
linux下第三個參數(shù)的類型跟unix下有點區(qū)別,自己對比一下。
作者: lqtnet    時間: 2004-07-15 16:49
標(biāo)題: accept 問題,在sco和linux下同樣的程序怎么linux出錯?
真的是賦一個值就可以了。linux還是比sco嚴(yán)謹(jǐn)一些。非常感謝斑竹。   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2