⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sctpsrvr.c

📁 檔案傳輸協定(FTP)為目前相當普遍與廣泛使用之網&#63799 應用。然而在傳統檔案傳輸協定之設計下
💻 C
字号:
/* *  sctpsrvr.c * *  SCTP multi-stream server. * *  M. Tim Jones <mtj@mtjones.com> * */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <time.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <netinet/sctp.h>#include "common.h"int main(){  int listenSock, connSock, ret;  struct sockaddr_in servaddr;  struct sctp_initmsg initmsg;  char buffer[MAX_BUFFER+1];  time_t currentTime;  /* Create SCTP TCP-Style Socket */  listenSock = socket( AF_INET, SOCK_STREAM, IPPROTO_SCTP );  /* Accept connections from any interface */  bzero( (void *)&servaddr, sizeof(servaddr) );  servaddr.sin_family = AF_INET;  servaddr.sin_addr.s_addr = htonl( INADDR_ANY );  servaddr.sin_port = htons(MY_PORT_NUM);  ret = bind( listenSock, (struct sockaddr *)&servaddr, sizeof(servaddr) );  /* Specify that a maximum of 5 streams will be available per socket */  memset( &initmsg, 0, sizeof(initmsg) );  initmsg.sinit_num_ostreams = 5;  initmsg.sinit_max_instreams = 5;  initmsg.sinit_max_attempts = 4;  ret = setsockopt( listenSock, IPPROTO_SCTP, SCTP_INITMSG,                      &initmsg, sizeof(initmsg) );  /* Place the server socket into the listening state */  listen( listenSock, 5 );  /* Server loop... */  while( 1 ) {    /* Await a new client connection */    printf("Awaiting a new connection\n");    connSock = accept( listenSock, (struct sockaddr *)NULL, (int *)NULL );    /* New client socket has connected */    /* Grab the current time */    currentTime = time(NULL);    /* Send local time on stream 0 (local time stream) */    snprintf( buffer, MAX_BUFFER, "%s\n", ctime(&currentTime) );    ret = sctp_sendmsg( connSock, (void *)buffer, (size_t)strlen(buffer),                         NULL, 0, 0, 0, LOCALTIME_STREAM, 0, 0 );    /* Send GMT on stream 1 (GMT stream) */    snprintf( buffer, MAX_BUFFER, "%s\n", asctime( gmtime( &currentTime ) ) );    ret = sctp_sendmsg( connSock, (void *)buffer, (size_t)strlen(buffer),                         NULL, 0, 0, 0, GMT_STREAM, 0, 0 );    /* Close the client connection */    close( connSock );  }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -