sctp中无法bind()

ch888168930 2012-02-10 11:18:42
初学网络编程。fedra13,网上下了sctp的安装包,安装成功,lsmod里也有相应模块,但是bind()返回的结果是 bind err: Permission denied 端口没被占用,不知道什么原因,求大神指导下


#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netinet/sctp.h>
#include<strings.h>
#define BUFFSIZE 1024
#define SERV_PORT 9006
int sys_err( char const* value )
{
perror(value);
return 1;
}

int main(int argc, char *argv[])
{
int sock_fd,msg_flags;
char readbuf[BUFFSIZE]={0};
struct sockaddr_in servaddr,cliaddr;
struct sctp_sndrcvinfo sri;
struct sctp_event_subscribe events;
int stream_increment = 1;

socklen_t len;
size_t rd_sz;

if(argc ==2 )
return sys_err("please input the IPaddr");
sock_fd = socket(AF_INET,SOCK_SEQPACKET,IPPROTO_SCTP);
if(sock_fd <0)
return sys_err("socket error");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
if( bind(sock_fd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0 )
return sys_err("bind err");

bzero(&events,sizeof(events));
events.sctp_data_io_event = 1;
if(setsockopt(sock_fd,IPPROTO_SCTP,SCTP_EVENTS,&events,sizeof(events))<0)
return sys_err("setsockopt err");

listen(sock_fd,5);

while(1){
len = sizeof(struct sockaddr_in);
rd_sz = sctp_recvmsg(sock_fd,readbuf,sizeof(readbuf),
(struct sockaddr*)&cliaddr,&len,
&sri,&msg_flags);
/* if( stream_increment ){
sri.sinfo_stream ++;
if(sri.sinfo_stream >= sctp_get_no_strms(sock_fd,(struct sockaddr*)&cliaddr,len))
sri.sinfo_stream = 0;
}
*/
sctp_sendmsg(sock_fd,readbuf,rd_sz,
(struct sockaddr*)&cliaddr,len,
sri.sinfo_ppid,
sri.sinfo_flags,sri.sinfo_stream,0,0);
}
}

...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ch888168930 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cxsjabcabc 的回复:]
引用 2 楼 ch888168930 的回复:

引用 1 楼 newpuple 的回复:
是程序被拒绝了
在linux下吧,是不是你的权限不够?


程序是在是root下跑的,root下编译无问题。应该权限够吧?


楼主参考:
http://www.bramschoenmakers.nl/en/node/439

http://www.lslnet.com/linux……
[/Quote]

依旧没解决问题 lisof后发现 can't identify protocol 这个不知道为什么
程序员小迷 2012-02-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ch888168930 的回复:]

引用 1 楼 newpuple 的回复:
是程序被拒绝了
在linux下吧,是不是你的权限不够?


程序是在是root下跑的,root下编译无问题。应该权限够吧?
[/Quote]

楼主参考:
http://www.bramschoenmakers.nl/en/node/439

http://www.lslnet.com/linux/dosc1/36/linux-270680.htm
ch888168930 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 newpuple 的回复:]
是程序被拒绝了
在linux下吧,是不是你的权限不够?
[/Quote]

程序是在是root下跑的,root下编译无问题。应该权限够吧?
newpuple 2012-02-10
  • 打赏
  • 举报
回复
是程序被拒绝了
在linux下吧,是不是你的权限不够?

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧