Ich bin neu in Socket-Programmierung. Ich habe eine grundlegende Funktion geschrieben, die einen UDP-Socket erstellt und ein Array durch es sendet. Meine Funktion erstellt einen Socket und gibt 0 in decriptor zurück, und wenn ich sendto() verwende, gibt es 10038 error.Ich versuche, Udp-Socket zu erstellen und eine Zeichenfolge durch es zu senden. aber es gibt 10038 Fehler bei sendto()
Hier ist mein Code:
int ret, a=0;
WSADATA wsa;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
exit(EXIT_FAILURE);
}
if (m_socket == INVALID_SOCKET)
{
m_socket = (AF_INET, SOCK_DGRAM,0);
}
SOCKADDR_IN addr;
char buf[256];
addr.sin_family=AF_INET;
addr.sin_port=htons(1234);
addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
strcpy(buf,"Hallo world!");
if (m_socket != INVALID_SOCKET)
{
ret=sendto(m_socket,buf,strlen(buf),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
if(ret==SOCKET_ERROR)
{
printf("Fehler: sendto, fehler code: %d\n",WSAGetLastError());
a=WSAGetLastError();
ret=-1;
}
CloseSocket();
WSACleanup();
m_socket = INVALID_SOCKET;
}
Fehlercode bedeutet "Socket Operation on nonsocket.". Link zu Doku: https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668%28v=vs.85%29.aspx#WSAENOTSOCK – Schore
Ich vermisse den Socket-Aufruf zu initialisieren 'm_socket' . – rpy
Sie haben den eigentlichen Aufruf von socket weggelassen: 'm_socket = socket (AF_INET, SOCK_DGRAM, 0);'. Die angegebene Syntax kompiliert, da() 's in C/C++ eine Liste von Ausdrücken einschließen kann, die ausgewertet werden, und der ganze Ausdruck hat den Wert des letzten Eintrags, dh (m_socket = (AF_INET, SOCK_DGRAM, 0) weist einfach 0 zu m_socket –