我新使用套接字。LACP实现,什么是正确的套接字使用?
我必须在Linux环境下实现,在用户空间,的LACP协议。每台计算机定期为每个以太网接口发送一个控制消息,一个结构LACPDU。 什么是最好的套接字家族,让他们沟通(RAW,PACKET,TCP,UDP)?套接字发送/接收必须是相同的类型?
我的应用程序已经发送了很好的LACPDU,但在另一端的应用程序没有收到它们(我正在捕获wireshark,它捕获数据包,但没有到达应用程序)。
这是我创建的套接字:
发送帕凯:(此工程确定,即使没有约束力)
int sock, sent;
struct sockaddr sa;
if (sock = socket(AF_INET, SOCK_PACKET, htons(ETH_P_SLOW))<0) //sockfd = socket(int socket_family, int socket_type, int protocol);
{perror("error socketsalida\n");
exit(EXIT_FAILURE);}
sa.sa_family = AF_INET;
strcpy(sa.sa_data, iface);
if((sent = sendto(sock, data, len, 0, &sa, sizeof(sa))) <= 0)
{perror("error sendto\n");
exit(EXIT_FAILURE);}
close(sock);
接收数据包(这不工作)
int received, sockrec;
struct sockaddr sa;
struct LACPDU buffer;
socklen_t addrlen = sizeof (sa);
sockrec = socket(AF_INET, SOCK_PACKET, htons(ETH_P_SLOW));
if (sockrec<0) {perror("Error receiver socket\n");exit(EXIT_FAILURE);}
if ((received = recvfrom(sockrec, &buffer, BUFLEN, 0, (struct sockaddr *)&sa, &addrlen)) < 0)
{perror("Errorrecvfrom\n");exit(EXIT_FAILURE);}
close (sockrec);
任何ideea?谢谢。
好的,非常感谢,我会尝试这种方式,然后我会发布结果。 – 2012-02-16 18:28:51