私は新しいソケットを使用しています。LACPの実装は、使用する正しいソケットは何ですか?
私はLACPプロトコルのユーザー空間でlinux環境で実装する必要があります。各コンピュータは、各イーサネットインタフェース毎に制御メッセージLACPDUを周期的に送信する。 (RAW、PACKET、TCP、UDP)の通信に最適なソケットの種類は何ですか?ソケットの送受信は同じタイプでなければなりませんか?
私のアプリケーションは既にLACPDUsをうまく送信していますが、相手側のアプリケーションはそれらを受信しません(私はwiresharkでキャプチャしていましたが、パケットをキャプチャしていますが、
これは私がソケットを作成する方法である:
送信パケ:(これも結合することなく、[OK]を作品)
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);
パケット受信:(このdoesntの仕事を)
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);
アイディア?ありがとう。
ありがとう、私はこの方法で試してみると、私は結果を投稿します。 –