kern_sosend-Kernel-Service
Zweck
Übergeben Sie Daten und Steuerinformationen an die dem Protokoll zugeordneten Senderoutinen.
Syntax
Parameter
| Element | Beschreibung |
|---|---|
| so | Der Socket zum Senden von Daten. |
| FADR | Die Zieladresse, nur erforderlich, wenn keine Verbindung zum Socket besteht. |
| top | Die MBUF -Kette der zu sendenden Daten. Beachten Sie, dass bei der ersten MBUF der Paketheader ausgefüllt sein muss. Setzen Sie top->m_pkthdr.len auf die Gesamtlänge der Daten in der mbuf -Kette und m_flags auf M_PKTHDR. Der Aufrufende muss MBUF -Speicher zuordnen, bevor die Routine aufgerufen wird. |
| control | Zeiger auf einen MBUF mit den zu sendenden Steuerinformationen. Der Aufrufende muss MBUF -Speicher zuordnen, bevor er die Funktion aufruft, wenn er Steuerinformationen übergeben möchte. |
| Flags | Markierungsoptionen für diesen Schreibaufruf. Der Aufrufende kann Flags auf NACHRICHTEN_NICHT_BLOCKsetzen. |
Beschreibung
Der kern_sosenden -Kernel-Service übergibt Daten und Steuerinformationen an das Protokoll, das den Senderoutinen zugeordnet ist.
Ausführungsumgebung
Der kern_sosenden -Kernel-Service kann von der Prozessumgebung aufgerufen werden.
Beispiele
ksocket_t so;
int flags = 0;
struct sockaddr_in faddr;
struct mbuf *send_mbuf;
struct sockaddr_in faddr;
char msg[100];
int i, rc;
rc = kern_socreate(AF_INET, &so, SOCK_STREAM, IPPROTO_TCP);
if (rc != 0 )
{
return(-1);
}
bzero(&faddr, sizeof(struct sockaddr_in));
faddr.sin_family = AF_INET;
faddr.sin_port = 23456;
faddr.sin_len = sizeof(struct sockaddr_in);
faddr.sin_addr.s_addr = inet_addr("9.3.108.210");
rc = kern_soconnect(so, (struct sockaddr *) &faddr);
if (rc != 0 )
{
return(-1);
}
send_mbuf = MGETBUF(sizeof(msg), M_DONOTWAIT); /* Caller needs to allocate mbuf memory */
if (send_mbuf == NULL)
{
return (-1);
}
for (i=0; i < 100, i++)
{
msg[i] = 0x2A;
}
bcopy(msg, mtod(send_mbuf, caddr_t), sizeof(msg));
send_mbuf->m_len = send_mbuf->m_pkthdr.len = sizeof(msg);
rc = kern_sosend(so, NULL, send_mbuf, 0, MSG_NONBLOCK));
if (rc != 0 )
{
return(-1);
} Rückgabewerte
| Element | Beschreibung |
|---|---|
| 0 | Bei Erfolg |
| >0 | Fehler |
Der Rückgabewert ungleich null ist die Fehlernummer, die in der Datei /usr/include/sys/errno.h definiert ist.