Raspbian C ++错误:在' struct'

时间:2015-11-20 02:55:14

标签: c++ sockets gps raspbian

我正在尝试为我的覆盆子pi编写一个程序,将其系统时间从同一网络上的GPS设备更改为时间。 GPS通过端口3000发送一个72字节的UDP数据包。我是套接字编程的新手,所以我不确定我哪里出错了。

我遇到的麻烦是我似乎无法用g ++构建它。我收到以下错误:

enter image description here

所以主要错误似乎在行

char A = struct sockaddr_in address;

这是我的程序的开始以及我创建套接字的方法以及错误所在的位置,如果您想要我的程序的主要方法,那么我也会添加它。

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
#include <errno.h>
#include <math.h>

// defines the socket used by the GPS
#define PORT 3000 

/****************************/
 int CreateSocket(int port)
/****************************/
{
    // Create an UDP-socket
    int sock = socket(AF_INET, SOCK_DGRAM, 0);

    // Check if UDP-socket was created
    if(sock==-1)
    {
       fprintf(stderr, "1CreateSocket: socket failed\n");
       return -1;
    }

    // Bind it to the local IP-address
    struct sockaddr_in address;
    char A = struct sockaddr_in address;
    fprintf(stderr, A);

    // Pointer to the block of memory to fill with address data
    memset(&address, 0, sizeof(address));

    address.sin_family      = AF_INET;             // Address family for IP-address 
    address.sin_addr.s_addr = htonl(INADDR_ANY);   // converts the unsigned integer hostlong from host byte order to network byte order 
    address.sin_port        = htons(port);         // converts the unsigned short integer hostshort from host byte order to network byte order

    // Check if IP-address is correct, if not Socket failed. Otherwise it returns the socket
    if(bind(sock, (struct sockaddr *) &address, sizeof(address))==-1)
    {
       fprintf(stderr, "2CreateSocket: bind failed\n");
       close(sock);
       return -1;
    }
    return sock;
}

有人可以在这看到任何明显的错误吗?感谢

1 个答案:

答案 0 :(得分:0)

你真的不需要这两行:

char A = struct sockaddr_in address;
fprintf(stderr, A);

您可以删除它们,因为它们没有做任何有用的事情,并且它们有语法错误。

为了做一些额外的清理,可以删除的那些行之上的绑定注释实际上应该高于对bind()的调用。