WSAENOTSOCK
10038
Socket operation on nonsocket.
An operation was attempted on something that is not a socket. Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid.
Das hilft mir in der Fehlerbeseitigung jedoch nicht weiter. Und auch Google hat nichts gefunden.
Der Source:
C-Quellcode
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- #include <winsock2.h>
- #include "mywinsock.h"
- int main()
- {
- SOCKET acceptsocket, sock;
- SOCKADDR_IN addr;
- long rc = 0;
- puts("Warte auf Verbindung");
- rc = startWinsock();
- if(rc != 0) {
- printf("Fehler: startwinsock, fehler code: %d\n",rc);
- }
- acceptsocket = createSocket;
- if(rc == SOCKET_ERROR) {
- puts("fehler beim createn");
- }
- rc = bindSocket(sock, addr, 12345);
- if(rc == SOCKET_ERROR) {
- printf("Fehler: bind, fehler code: %d\n",WSAGetLastError());
- }
- rc = listen(acceptsocket, 10);
- if(rc == SOCKET_ERROR) {
- puts("Fehler beim listen");
- }
- sock = accept(acceptsocket, NULL, NULL);
- if(rc == INVALID_SOCKET) {
- puts("Verbindung fehlgeschlagen");
- }
- else {
- puts("Verbindung hergestellt");
- }
- closesocket(acceptsocket);
- closesocket(sock);
- WSACleanup();
- system("pause");
- return 0;
- }
Das Headerfile "mywinsock.h":
Quellcode
- #ifndef winsock_h
- #define winsock_h
- int bindSocket(SOCKET sock, SOCKADDR_IN address, int port);
- SOCKET createSocket(void);
- int connectSocket(SOCKET sock, SOCKADDR_IN address, char ip[], int port);
- int startWinsock(void);
- int bindSocket(SOCKET sock, SOCKADDR_IN address, int port) {
- memset(&address,0,sizeof(SOCKADDR_IN));
- address.sin_family=AF_INET;
- address.sin_port=htons(port);
- address.sin_addr.s_addr=ADDR_ANY;
- return bind(sock,(SOCKADDR*)&address,sizeof(SOCKADDR_IN));
- }
- SOCKET createSocket(void) {
- return socket(AF_INET,SOCK_STREAM,0);
- }
- int startWinsock(void) {
- WSADATA wsa;
- return WSAStartup(MAKEWORD(2,0),&wsa);
- }
- int connectSocket(SOCKET sock, SOCKADDR_IN address, char ip[], int port) {
- memset(&address,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
- address.sin_family=AF_INET;
- address.sin_port=htons(port); // wir verwenden mal port 12345
- address.sin_addr.s_addr=inet_addr(ip); // zielrechner ist unser eigener
- return connect(sock,(SOCKADDR*)&address,sizeof(SOCKADDR));
- }
- #endif
Compiler is GCC 3.4 mit Code:Blocks als IDE.
edit:
Hat sich erledgt. Äuserst peinlicher Feher!
Hab hier:
die Klammern Vergessen.
Und Hier:
hätte der acceptsocket hergehört und nicht der connectionsocket.
mfg
obi--wan
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von obi--wan ()