Unix Network Programming Episode 73

news/2024/10/31 9:30:22/

SCTP One-to-Many-Style Streaming Echo Server: ‘main’ Function

#include "unp.h"int main(int argc, char **argv)
{int sock_fd, msg_flags;char readbuf[BUFFSZIE];struct sockaddr_in servaddr, clientaddr;struct sctp_sndrcvinfo sri;struct sctp_event_subscribe events;int stream_increment=1;socklen_t len;size_t rd_sz;if(argc==2){stream_increment=atoi(argv[1]);}sock_fd=Socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);bzero(&servaddr, sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl(INVADDR_ANY);servaddr.sin_port=htons(SERVA_PORT);Bind(sock_fd, (SA *)&servaddr, sizeof(servaddr));bzero(&events,sizeof(events));events.sctp_data_io_event=1;Setsockopt(sock_fd, IPPROTO_SCTP, SCTP_EVENTS, &events, sizeof(events));Listen(sock_fd, LISTENQ);for(;;){len=sizeof(struct sockaddr_in);rd_sz=Sctp_recvmsg(sock_fd, readbuf,sizeof(readbuf), (SA *)&clientaddr, &len, &sri, &msg_flags);if(stream_increment){sri.sinfo_stream++;if(sri.sinfo_stream>=sctp_get_no_strms(sock_fd, (SA *)&clientaddr, len))sri.sinfo_stream=0;}Sctp_sendmsg(sock_fd, readbuf, rd_sz, (SA*)&clientadr, len, sri.sinfo_ppid,sri.sinfo_flags, sri.sinfo_stream,0,0);}
}

SCTP streaming echo server

SCTP One-to-Many-Style Streaming Echo Client: ‘main’ Function

#include "unp.h"int main(int argc, char **argv)
{int sock_fd;struct sockaddr_in servaddr;struct sctp_event_subscribe events;int echo_to_all=0;if(argc<2)err_quit("Missing host argument - use '%s host [echo] '\n", argv[0]);if(argc>2){printf("Echoing messages to all streams\n");}sock_fd=Socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);bzero(&servaddr, sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl(INADDR_ANY);servaddr.sin_port=htons(SERV_PORT);Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);bzero(&events, sizeof(events));Setsockopt(sock_fd, IPPROTO_SCTP, SCTP_EVENTS, &events, sizeof(events));if(echo_to_all==0)sctpstr_client(stdin,sock_fd, (SA *)&servaddr, sizeof(servaddr));elsesctpstr_client_echoall(stdin, sock_fd, (SA *)&servaddr, sizeof(servaddr));Close(socke_fd);return 0;
}

SCTP streaming echo client main

SCTP Streaming Echo Client: ‘str_cli’ Function

#include "unp.h"void sctpstr_client(FILE *fp, int sock_fd, struct sockaddr *to, socklen_t tolen)
{struct sockaddr_int peeraddr;struct sctp_sndrcvinfo sri;char sendline[MAXLINE], recvlien[MAXLINE];socklen_t len;int out_sz, rd_sz;int msg_flags;bzero(&sri,sizeof(sri));while(fgets(sendline, MAXLINE, fp)!=NULL){if(sendline[0]!=' ['){printf("Error, line must be of the form '[streamnum] text'\n");continue;}sri.sinfo_stream=strtol(&sendline[1],NULL,0);out_sz=strlen(sendline);Sctp_sendmsg(sock_fd, sendline, out_sz, to, tolen, 0, 0, sri.sinfo_stream,0,0);len=sizeof(peeraddr);rd_sz=Sctp_recvmsg(sock_fd, recvline,sizeof(recvline), (SA *)&peeraddr, &len, sri, &msg_flags);printf("From str:%s seq:%d (assoc: 0x%x):"sri.sinfo_stream,sri.sinfo_ssn,(u_int)sri.sinfo_assoc_id);printf("%.*s",rd_sz, recvline);}
}

SCTP sctp_strcli function


http://www.ppmy.cn/news/741954.html

相关文章

WinRAR修复解压文件

WinRAR修复解压文件

winrar解压时出现诊断信息怎么办?

经常有朋友下载了是.rar的压缩包&#xff0c;在解压时出现了“WinRAR:诊断信息”提示。出现这种情况分几种问题&#xff0c;比如是解压软件本身出问题了&#xff0c;或者解压时出现WinRAR诊断信息&#xff08;无法创建文件&#xff0c;文件名过长&#xff09;&#xff0c;但解决…

WinRAR 激活的小办法

转载自https://www.cnblogs.com/Johnfx-home/p/3770338.html 如果你用的正版WinRAR没有激活&#xff0c;将以下注册码复制到新建文档中重命名为rarreg.key,然后将rarreg.key复制到WinRAR根目录中即可激活。 比如我的WinRAR装在这里&#xff1a;C:\Program Files\WinRAR\ 那就…

WinRAR去除打开后弹出广告的方法

网上查了很多方法&#xff0c;写的都不太详细&#xff0c;搞定后自己整理一版&#xff0c;分享给大家。 WinRAR是一款流行好用功能强大的压缩解压缩工具。 功能&#xff1a;支持鼠标拖放及外壳扩展&#xff1b;内置程序可以解开 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、…

解压时出现WinRAR诊断信息(无法创建文件,文件名过长),怎么办!!!

打开解压程序&#xff0c;选中你要解压缩的文件&#xff0c;右击&#xff0c;在弹出的菜单中选择“无需确认直接解压缩”。

百度网盘解压显示服务器错误,百度网盘、Winrar等解压文件解压出错怎么办?

我们在解压文件的时候一般都会用到百度网盘、Winrar等解压软件&#xff0c;解压速度快、解压率高。但是大家在解压过程中有没有遇到解压文件出错的问题&#xff0c;下面小编就给大家讲讲百度网盘、Winrar等解压文件出错的解决办法。 解压出错解决办法&#xff1a; 1、确认压缩软…

winrar CRC校验失败,文件被破坏的解决办法

昨天下载了一个将近一G的软件&#xff0c;在解压时&#xff0c;提示“CRC校验失败,文件被破坏”&#xff0c;不至于再重新下载吧&#xff0c;需要四个多小时呢&#xff0c;网上的方法也试了好多种&#xff0c;都不好用... 我采用的方法很简单&#xff1a;在没有解压完&…

帮你修复损坏的RAR文件

曾经有一个重要的RAR包放在我面前&#xff0c;我却没有珍惜&#xff0c;当我终于下定决心打开它的时候&#xff0c;却发现它已经莫名其妙的坏掉了&#xff0c;我没有办法得到包中的数据和文件。唉~~~ 人生中最痛苦的事莫过于此~~~ <?xml:namespace prefix o ns "urn…