sctp的问题
我在2.6.14.7kernel的linux上测试SCTP,sctp版本1.04-1
用Select模型接收数据
如下方法发送数据
if(FD_ISSET(fileno(stdin), &rdfds))
{
memset(kb_input,0,64);
fgets(kb_input,64,stdin);
kb_input[strlen(kb_input)-1] = 0x00;
if (strcmp(kb_input,"quit")== 0) exit(0);
printf("send %s to server\n",kb_input);
ret = sctp_sendmsg(dc_connect_socket,
(void *)kb_input, strlen(kb_input),
(struct sockaddr *)&servaddr, sizeof(servaddr),0, 0, 0, 0, 0 );
}
对方可以接收到数据。
但是,如果这样写:
if(FD_ISSET(fileno(stdin), &rdfds))
{
memset(kb_input,0,64);
fgets(kb_input,64,stdin);
kb_input[strlen(kb_input)-1] = 0x00;
if (strcmp(kb_input,"quit")== 0) exit(0);
printf("send %s to server\n",kb_input);
ret = sctp_sendmsg(dc_connect_socket,
(void *)kb_input, 64,
(struct sockaddr *)&servaddr, sizeof(servaddr),0, 0, 0, 0, 0 );
}
对方就接收不到数据。(只是将发送数据的长度修改了一下)。
现象是,在对方的计算机上抓包可以看到数据发送过来了,但是,接收数据方判断FD_ISSET(socket,&rfdset) 不通过。程序进入不了接收函数。
请问是不是正常,如何解决,谢谢