我试图使用SCTP套接字在SCTP协议中创建客户端服务器。这是我第一次使用sctp。
这是客户代码
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#define MAX 80
#define PORT 8080
#define SA struct sockaddr
int main()
{
int sockfd, connfd;
struct sockaddr_in servaddr, cli;
// socket create and varification
sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
if (sockfd == -1) {
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr, sizeof(servaddr));
// assign IP, PORT
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
servaddr.sin_port = htons(PORT);
// function for chat
char *buf="fuck this world";
int l=sctp_sendmsg(sockfd, (void *) buf, strlen(buf) + 1, (struct sockaddr*)&servaddr,sizeof(struct sockaddr), 0, 0, 0, 0, 0 );
if(l>0)
printf("send success\n");
else printf("send failed\n");
// close the socket
close(sockfd);
}
这是服务器代码
#include <stdio.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#define MAX 80
#define PORT 8080
#define SA struct sockaddr
// Driver function
int main()
{
int sockfd, connfd, len;
struct sockaddr_in servaddr, cli;
// socket create and verification
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr, sizeof(servaddr));
// assign IP, PORT
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
// Binding newly created socket to given IP and verification
if ((bind(sockfd, (SA*)&servaddr, sizeof(servaddr))) != 0) {
printf("socket bind failed...\n");
exit(0);
}
else
printf("Socket successfully binded..\n");
int buf[200];
while(1)
{
int l=sctp_recvmsg(sockfd,buf,sizeof(buf),NULL,0,0,0);
if(l>0)
printf("%s\n",buf);
sleep(1);
}
close(sockfd);
}
问题在于客户端正在发送消息而没有任何错误。但我在服务器上看不到该消息。也许服务器代码不正确。为什么不起作用? 此代码仅供学习。我弄清楚了它是如何工作的,我将创建客户端服务器以通过sctp发送文件。