客户端发送消息但在服务器上看不到

时间:2020-06-15 11:11:21

标签: c sockets sctp

我试图使用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发送文件。

0 个答案:

没有答案