在函数内写一个C套接字

时间:2014-07-09 13:55:16

标签: c sockets

我是套接字的新手,我不知道是否有可能做我正在尝试的事情。首先,我在谷歌和stackoverflow中寻找更多信息,但我没有找到任何东西:(

现在我解释一下我的问题。我在main函数中创建了客户端套接字(带有socket y连接的函数),没有任何问题。但后来我调用了一个名为sendframe()的函数,我创建了一些函数,然后我使用write函数在socket中放入一条消息。这里的问题是我不知道为什么write函数会给出错误(返回-1)。我认为问题是我没有正确传递套接字文件描述符,但我不确定(我不相信只使用文件描述符允许我在套接字中写入...)

以下是我要做的事情的片段:

    #include ...

void sendframe(int sockfd);

void main(void) {
//// Open the socket
    int sockfd;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        error("open socket erorr\n");

    server = gethostbyname("192.168.20.155");
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = 1414;
    serv_addr.sin_addr = *((struct in_addr *) server->h_addr);
    bzero(&(serv_addr.sin_zero),8);

    if(connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr))==-1)
        error("connect error\n");
        exit(-1);


   // ..... More code.....

   // Send frame
   sendframe(&sockfd);

}

void sendframe(int sockfd)
{
   // Some stuff...

    char *frame
    int num = write(sockfd,frame,strlen(frame));

}

可能答案很简单,但我是新手。任何线索?

1 个答案:

答案 0 :(得分:0)

sendframe(&sockfd);应为sendframe(sockfd);,因为sendframe需要一个int,而不是int *