Sorry: I am not sure whether it is the right place to ask this question. if not, do please tell me ,where I should ask the question. I write a small sctp server program, but when build with cc(sunstudio11,cc -g server.c -lnsl -lsocket -lsctp) in soalris 10, it always return error, but works well when build with /usr/sfw/gcc -g server.c -lnsl -lsocket -lsctp. when build with cc, the program keeps saying: "sctp_failed: 11:Resource temporarily unavailable" what should I do, as I want to use cc.thanks. following is my program: #include <sys/socket.h> /* basic socket definitions */ #include <netinet/in.h> /* sockaddr_in{} and other Internet defns */ #include <errno.h> #include <arpa/inet.h> /* inet(3) functions */ #include <netinet/sctp.h> /* note if sctp does not exist we blow up :> */ #include<stdlib.h> #include <string.h> #include<strings.h> #define BUFFSIZE 100 #define SERV_PORT 8080 #define SA struct sockaddr
int main(int argc, char **argv) { int sock_fd, msg_flags; char readbuf[BUFFSIZE]; struct sockaddr_in servaddr, cliaddr; struct sctp_sndrcvinfo sri; struct sctp_event_subscribe evnts; int stream_increment = 1; socklen_t len; int rd_sz; sock_fd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP); // sock_fd = socket(AF_INET, SOCK_STREAM, 0); memset(&servaddr,0, 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, (SA *) & servaddr, sizeof(servaddr))<0) { printf("bind failed for:%s\n",strerror(errno)); exit(1); } memset(&evnts,0, sizeof(evnts)); evnts.sctp_data_io_event = 1; if(setsockopt(sock_fd, IPPROTO_SCTP, SCTP_EVENTS, &evnts, sizeof(evnts))<0) { printf("setsockopt failed for:%s\n",strerror(errno)); exit(1); } if(listen(sock_fd, 7)<0) { printf("listen failed for:%s\n",strerror(errno)); exit(1); } for (;;) { len = sizeof(struct sockaddr_in); rd_sz = sctp_recvmsg(sock_fd, readbuf, sizeof(readbuf), (SA *) & cliaddr, &len, &sri, &msg_flags); if(rd_sz<=0) { printf("sctp_failed: %d:%s\n",errno, strerror(errno)); continue; } readbuf[rd_sz]=0; printf("received:%s:length=%d\n",readbuf,rd_sz); sctp_sendmsg(sock_fd, readbuf, rd_sz, (SA *) & cliaddr, len, sri.sinfo_ppid, sri.sinfo_flags, sri.sinfo_stream, 0, 0); } } -- This message posted from opensolaris.org _______________________________________________ opensolaris-code mailing list opensolaris-code@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/opensolaris-code