Похоже, есть очень много функций, которые могут отправлять данные SCTP на Linux, включая общие функции, такие как Send () и write () , но также SCTP_SEND и sctp_sendmsg . Последний включает некоторые «специальные функции SCTP». Но сколько существует разных функций, и как они отличаются?
int flags = 0;
sctp_sndrcvinfo zeroed { 0 };
struct {
uint32_t frame_nr;
uint16_t sample_rate;
uint16_t num_samples;
uint8_t samples[1500];
} buffer;
int result = sctp_recvmsg(sock,
&buffer, sizeof(buffer), // Actual data
nullptr, 0, // We don't care about the sender
&zeroed, // SCTP Metadata
&flags); // Must be zero before call
< /code>
Это успешно получает сообщения от устройства с закрытым исходным кодом. Я пытаюсь создать симулятор, который отправляет тот же тип сообщений SCTP. Я могу успешно подключить гнездо, но после этого передача данных не удается. < /P>
#include
#include
#include
#include
#include
#include
#include
struct {
uint32_t frame_nr;
uint16_t sample_rate;
uint16_t num_samples;
uint8_t samples[1500];
} buffer {0};
int main()
{
// SCTP server-side setup
int ls = socket(PF_INET, SOCK_STREAM, IPPROTO_SCTP);
if (ls == -1) {
perror("failure opening listen socket");
exit(-3);
}
struct sockaddr_in serverAddress { AF_INET };
serverAddress.sin_addr.s_addr = htonl(INADDR_ANY);
serverAddress.sin_port = htons(19000);
int br = bind(ls, (struct sockaddr *)&serverAddress, sizeof(serverAddress));
if (br == -1) {
perror("bind error");
close(ls);
exit(-4);
}
// Set up 2 streams.
struct sctp_initmsg initMsg { 0 };
initMsg.sinit_num_ostreams = 2; // Matches receiver
initMsg.sinit_max_instreams = 2; // Matches receiver
initMsg.sinit_max_attempts = 0;
initMsg.sinit_max_init_timeo = 0;
setsockopt(ls, IPPROTO_SCTP, SCTP_INITMSG, &initMsg, sizeof(initMsg));
int rl = listen(ls, 1);
if(rl < 0) {
perror("failed to listen for connection");
close(ls);
exit(-5);
}
struct sockaddr_in recv_addr;
socklen_t len = sizeof(recv_addr);
int ss = accept(ls, reinterpret_cast(&recv_addr), &len);
if (ss == -1) {
perror("failed to accept connection");
close(ls);
exit(-6);
}
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79509604/which-functions-can-be-used-to-send-sctp-data-and-how-do-they-differ[/url]
Похоже, есть очень много функций, которые могут отправлять данные SCTP на Linux, включая общие функции, такие как Send () и write () , но также SCTP_SEND и sctp_sendmsg . Последний включает некоторые «специальные функции SCTP». Но сколько существует разных функций, и как они отличаются?[code] int flags = 0; sctp_sndrcvinfo zeroed { 0 }; struct { uint32_t frame_nr; uint16_t sample_rate; uint16_t num_samples; uint8_t samples[1500]; } buffer; int result = sctp_recvmsg(sock, &buffer, sizeof(buffer), // Actual data nullptr, 0, // We don't care about the sender &zeroed, // SCTP Metadata &flags); // Must be zero before call < /code> Это успешно получает сообщения от устройства с закрытым исходным кодом. Я пытаюсь создать симулятор, который отправляет тот же тип сообщений SCTP. Я могу успешно подключить гнездо, но после этого передача данных не удается. < /P> #include
Похоже, есть очень много функций, которые могут отправлять данные SCTP на Linux, включая общие функции, такие как Send () и write () , но также SCTP_SEND и sctp_sendmsg . Последний включает некоторые «специальные функции SCTP». Но сколько существует...
Я пытаюсь создать правило nftables, которое может регулировать трафик SCTP, содержащий DIAMETER. Кроме того, я хотел бы удалить только запросы на аутентификационную информацию ( AIR ).
Так что в целом все должно пройти, кроме AIR, который превышает...
Я борюсь со своим проектом, который требует установки и запуска проекта Srsran для 5G подключения на моем Jetson Orin Nano 8gb. (Я уже пробовал Raspberry Pi Model B B, но отказался продолжать из -за отсутствия производительности.) Я должен был...
Я использую этот код для расчета точек поворота.
def pivots_low(osc, LBR, LBL):
pivots = []
for i in range(len(osc) - LBR):
pivots.append(0)
pivot = True
if i > LBL:
for j in range(1, LBR + 1):
if osc >= osc :
pivot = False
for j in range(1, LBL +...