套接字:在服务器代码中获取socket()

时间:2014-07-27 02:34:20

标签: c sockets

我尝试在以下服务器代码中返回socket()的结果:

#include "sys/socket.h"
#include "sys/types.h"
int main(void)
{   
    int listenfd = 0,connfd = 0;
    struct sockaddr_in serv_addr;
    char sendBuff[1025];  
    int numrv;  
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    printf("socket retrieve success\n");
    return(listenfd);
}

我对这段代码执行gcc并且运行良好,但是当我执行它时,它什么也没有返回。

1 个答案:

答案 0 :(得分:0)

如果成功socket()返回新套接字的整数文件描述符。如果有错误,则返回-1。您可以检查errno中的错误代码,并使用perror()打印出文本版本。

请注意,您需要#include <netinet/in.h>来定义struct sockaddr_in

这可能有助于您理解:

#include <stdio.h>
#include <errno.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>

int main(void)
{
    int listenfd = 0,connfd = 0;
    struct sockaddr_in serv_addr;
    char sendBuff[1025];
    int numrv;
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    if (listenfd == -1) {
        printf("Failed to create socket: errno = %d\n", errno);
        perror("Failed to create socket");
    }
    else
        printf("socket created, fd = %d\n", listenfd);
    return(listenfd);
}