LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1066|回复: 1

redhat as4 update3 sctp socket 选项问题大伙帮忙看看

[复制链接]
发表于 2006-10-24 10:19:28 | 显示全部楼层 |阅读模式
//#include "/usr/src/kernels/2.6.18-1.2784.fc6-i686/include/net/sctp/sctp.h"
//#include "unp.h"
#include "../lib/error.c"
#include "../lib/wraplib.c"
#include "../lib/wrapsock.c"
#include "../lib/wrapunix.c"
#include "../lib/writen.c"
//#include "sctp_wrapper.c"
//#include "/usr/src/kernels/2.6.18-1.2784.fc6-i686/include/net/sctp/sctp.h"
//#include "/usr/src/kernels/2.6.18-1.2784.fc6-i686/include/net/sctp/structs.h"
int main(int argc,char **argv)
{
        int                                sockfd,msg_flags;
        char                                readbuff[BUFFSIZE];
        struct sockaddr_in                servaddr,chiladdr;
        struct sctp_sndrcvinfo                sri;
        struct sctp_event_subscribe        evnts;
        int                                stream_increment=1;
        socklen_t                        len;
        size_t                                rd_sz;
       
        if(argc==2)
        {
                stream_increment=atoi(argv[1]);
        }       
        sockfd=Socket(AF_INET,SOCK_SEQPACKET,IPPROTO_SCTP);
        bzero(&servaddr,sizeof(servaddr));
        servaddr.sin_family=AF_INET;
        servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
        servaddr.sin_port=htons(SERV_PORT);
       
        Bind(sockfd,(SA *)&servaddr,sizeof(servaddr));
       
        bzero(&evnts,sizeof(evnts));
        evnts.sctp_data_io_event = 1;
        Setsockopt(sockfd,IPPROTO_SCTP,SCTP_EVENTS,&evnts,sizeof(evnts));
       
        Listen(sockfd,LISTENQ);       
        for(;;)
        {
                len = sizeof(struct sockaddr_in);
                rd_sz = sctp_recvmsg(sockfd,readbuff,sizeof(readbuff),(SA *)&chiladdr,&len,&sri,&msg_flags);
                if(stream_increment)
                {
                        sri.sinfo_stream++;
                        if(sri.sinfo_stream >= sctp_get_no_strms(sockfd,(SA *)&chiladdr,len))
                                sri.sinfo_stream=0;
                }
                sctp_sendmsg(sockfd,readbuff,rd_sz,(SA *)&chiladdr,&len,&sri.sinfo_ppid,sri.sinfo_flags,sri.sinfo_stream,0,0);               
        }
}


注:错误输出
sctpserv01.c: In function `main':
sctpserv01.c:16: error: storage size of 'sri' isn't known
sctpserv01.c:17: error: storage size of 'evnts' isn't known
sctpserv01.c:36: error: `SCTP_EVENTS' undeclared (first use in this function)
sctpserv01.c:36: error: (Each undeclared identifier is reported only once
sctpserv01.c:36: error: for each function it appears in.)

我通过一个SOCKET选项测试程序也得到了AS4不支持SCTP SOCKET选项,在netinet目录下也没有找到.sctp.h文件 大伙帮忙看看怎么样让AS4支持SCTP SOCKET选项呀先谢谢了.
发表于 2006-10-25 10:24:58 | 显示全部楼层
似乎是缺少头文件。

你可以在include目录下grep找找看,或许是别的头文件。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表