> 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. > en 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