sctp_strcli_un.c 1010 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "unp.h"
  2. void
  3. sctpstr_cli(FILE *fp, int sock_fd, struct sockaddr *to, socklen_t tolen)
  4. {
  5. struct sockaddr_in peeraddr;
  6. struct sctp_sndrcvinfo sri;
  7. char sendline[MAXLINE], recvline[MAXLINE];
  8. socklen_t len;
  9. int out_sz,rd_sz;
  10. int msg_flags;
  11. bzero(&sri,sizeof(sri));
  12. while (fgets(sendline, MAXLINE, fp) != NULL) {
  13. if(sendline[0] != '[') {
  14. printf("Error, line must be of the form '[streamnum]text'\n");
  15. continue;
  16. }
  17. sri.sinfo_stream = strtol(&sendline[1],NULL,0);
  18. /* include mod_unordered */
  19. out_sz = strlen(sendline);
  20. Sctp_sendmsg(sock_fd, sendline, out_sz,
  21. to, tolen,
  22. 0,
  23. MSG_UNORDERED,
  24. sri.sinfo_stream,
  25. 0, 0);
  26. /* end mod_unordered */
  27. len = sizeof(peeraddr);
  28. rd_sz = Sctp_recvmsg(sock_fd, recvline, sizeof(recvline),
  29. (SA *)&peeraddr, &len,
  30. &sri,&msg_flags);
  31. printf("From str:%d seq:%d (assoc:0x%x):",
  32. sri.sinfo_stream,sri.sinfo_ssn,
  33. (u_int)sri.sinfo_assoc_id);
  34. printf("%.*s",rd_sz,recvline);
  35. }
  36. }