SCTP一对一模式(TCP)模式的客户端代码
来源:互联网 发布:淘宝阿正书店 编辑:程序博客网 时间:2024/06/05 18:26
以下代码为基于sctp协议一对一模式(TCP)模式的客户端代码.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/sctp.h> #include <arpa/inet.h> const int buf_size = 1024; const int echo_port = 19000; char *usage_msg = "usage echo_c ip_addr istreams ostream ochannel"; void usage() { fprintf(stderr,"%s\n", usage_msg); exit(1); } int main(int argc, char** argv) { int sockfd, len; struct sockaddr_in serv_addr; struct sctp_initmsg initmsg; struct sctp_status status; struct sctp_sndrcvinfo sinfo; int ochannel; if(argc < 5) usage(); sockfd = socket(AF_INET,SOCK_STREAM,IPPROTO_SCTP); if(sockfd < 0) { printf("error while initializing socket.\n"); exit(1); } struct sockaddr_in *addrs = (struct sockaddr_in*) malloc(sizeof(struct sockaddr_in)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(argv[1]); serv_addr.sin_port = htons(echo_port); memcpy(addrs,&serv_addr,sizeof(struct sockaddr_in)); memset(&initmsg, 0, sizeof(initmsg)); initmsg.sinit_max_instreams = atoi(argv[2]); initmsg.sinit_num_ostreams = atoi(argv[3]); printf("asking for %d input stream, %d output stream.\n", initmsg.sinit_max_instreams,initmsg.sinit_num_ostreams); int brst = setsockopt(sockfd, IPPROTO_SCTP,SCTP_INITMSG, &initmsg,sizeof(initmsg)); if(brst != 0) { printf("error while set socket option.\n"); exit(1); } brst = sctp_connectx(sockfd, (struct sockaddr*) addrs, 1); if(brst < 0) { printf("can not connect to host.\n"); exit(1); } memset(&status,0,sizeof(status)); len = sizeof(status); status.sstat_assoc_id = 1; brst = getsockopt(sockfd, IPPROTO_SCTP,SCTP_STATUS,&status,(socklen_t*)&len); if(brst < 0) { printf("error while geting socket option.\n"); exit(1); } printf("input stream:%d, output stream:%d\n", status.sstat_instrms,status.sstat_outstrms); ochannel = atoi(argv[4]); if(ochannel >= status.sstat_outstrms) { printf("writing on illegal channel %d \n", ochannel); } while(true) { bzero(&sinfo,sizeof(sinfo));printf("input a message: ");char buff[100];bzero(buff, 100); scanf("%s", buff); printf("input ochannel:"); scanf("%d", &ochannel);sinfo.sinfo_stream = ochannel;sctp_send(sockfd, buff, strlen(buff), &sinfo, 0); } close(sockfd); return 0; }
以下代码为基于SCTP协议的一对一模式(TCP)模式的客户端代码。
- SCTP一对一模式(TCP)模式的客户端代码
- SCTP 一对一模式(TCP)的服务器端代码
- SCTP 一对多模式 (UDP模式)的服务器端代码
- (TCP模式)客户端与服务器之间的文件传输
- python服务器客户端实战tcp模式
- TCP服务器端、客户端模式初文
- (TCP模式下)客户端与服务器交互
- 客户端的MVC模式
- js事件编程的发布/订阅模式(一对一关系)
- Scrum模式:一对一Retrospective的目的边界和框架
- SCTP 库的简述和代码
- 关于TCP Socket 非阻塞模式时客户端connect返回SOCKET_ERROR的情况
- 实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用
- 测试协同CS模式下的客户端操作通知时间 采用协议TCP
- LINUXC--TCP的客户端/服务器代码
- zz TCP vs SCTP
- SCTP vs TCP
- TCP 与 SCTP
- 使用 dbms_file_transfer 包在asm 和文件系统间拷贝文件
- Android常用列表控件
- 如果在CEdit中实现Ctrl+V、Ctrl+C、Ctrl+X的功能
- LeetCode —— Regular Expression Matching
- Python遍历目录文件的两种方法
- SCTP一对一模式(TCP)模式的客户端代码
- 数字信号产生之贝努里分布的随机数
- Java解析XML的四种方法
- 8086 CPU 寄存器简介
- OSX升级到10.8.4后Xcode无法正常调试模拟器问题
- javaweb中文乱码问题总结
- android仿天猫精品页列表界面WIN8风格列表Listview实现
- 作为Web开发人员,我为什么喜欢Google Chrome浏览器
- 通过协议在页面之间传值