Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi, ich wollte fragen ob ihre vielleicht wisst wo es aktuelle socket tuts gibts

einem unter linux und einmal unter win. in c/c++

danke ,

mfg Time-walker

hab mir gerade die grundlagen durchgelesen, hab aber ein problem beim complimieren von code.

<code>

#include <windows.h>

#include <winsock2.h>

#include <stdio.h>

#include <conio.h>

int startWinsock(void);

int main()

{

long rc;

rc=startWinsock();

if(rc!=0)

{

printf("Fehler: startWinsock, fehler code: %d\n",rc);

return 1;

}

else

{

printf("Winsock gestartet!\n");

}

getch();

}

int startWinsock(void)

{

WSADATA wsa;

return WSAStartup(MAKEWORD(2,0),&wsa);

}

</code>

benutze den bloodseh dev - C++ compiler unter.

hab ein neues projekt erstellt- konsolenanwendung und C projekt.

hab den code eingefügt und wollte den es complimieren.

fehlermeldung = [Linker error] undefined reference to `WSAStartup@8'

[build Error] [socket.exe] Error 1

weiss nicht.

hab mal paar updates gemacht.

jetzt hab ich diese fehler meldung.

[Linker error] undefined reference to `WSAStartup@8'

ld returned 1 exit status

[build Error] [socket.exe] Error 1

wie oder wo kann man das nachschauen ?

alo bei den compiler optionen unter bibliotheken is der order zu den lib dateien angegeben. dann hab ich vielleicht nich die lib dateien.

aber die lib dateien haben nicht als endung .lib sonder .a

z.b. libwsock32.a

habe win2k, also das is den compiler www.bloodshed.net

so habe das problem gelöst.

musste unter projektoptionen die ws2_32.lib hinzufügen.

aber bei mir heisst die datei libwsock32.a.

jetzt läufts auch, aber ein neues problem is aufgetreten.

ob wohl ich in meinem quellcode den befehl am ende getch(); nehmen anstatt retrun 0; geht das fenster sofort wieder zu.

hab das problem schon gelöst hab einfach das return raus genommen dann gings

wenn ich einfach nach dem retrun ne getch(); mache gings auch nicht.

hab das problem schon gelöst hab einfach das return raus genommen dann gings

wenn ich einfach nach dem retrun ne getch(); mache gings auch nicht.

Du musst getch() vor dem return machen. Wenn der Programmablauf auf ein return trifft, wird (außer den Destruktoren von Autovariablen) nichts mehr in der Funktion ausgeführt.

ja return brauch ich doch nicht, hab einfach das retrun gelöst und es lief.

also so sieht der quellcode bei mir jetzt aus.

Client:

#include <windows.h>

#include <stdio.h>

#include <winsock2.h>

#include <conio.h>


int winsock();


int winsock()

{ 

WSADATA wsa;

return WSAStartup(MAKEWORD(2,0),&wsa);

}


main()

{

long a;

SOCKET s;

a=winsock();

SOCKADDR_IN addr;

if(a!=0)

{printf("fehler: %d",a);

}

else

{printf("socket gestartet!\n");

}

s=socket(AF_INET,SOCK_STREAM,0);

if(s==INVALID_SOCKET)

{printf("konte nicht erstellt werden, Fehler: %d\n",WSAGetLastError());

}

else

{printf("Socket erstellt!\n");

}


memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten 

addr.sin_family=AF_INET;

addr.sin_port=htons(12345); // wir verwenden mal port 12345

addr.sin_addr.s_addr=inet_addr("127.0.0.1"); // zielrechner ist unser eigener

a=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));


if(a==SOCKET_ERROR)

{

  printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());

}


else

{

printf("Verbunden mit 127.0.0.1\n...[Enter]");}


getch();

}
und das ist der server:
#include <windows.h>

#include <winsock2.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>


int Winsock();


int Winsock()

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&wsa);

}


int main()

{

  long a;

  SOCKET acceptSocket;

  SOCKADDR_IN addr;

  // Winsock starten

  a=Winsock();

  if(a!=0)

  {

    printf("Fehler: startWinsock, fehler code: %d\n",a);

  }


  else

  {

    printf("Socket gestartet!\n");

    sleep(2);

  }

  // Socket erstellen

  acceptSocket=socket(AF_INET,SOCK_STREAM,0);

  if(acceptSocket==INVALID_SOCKET)

  {

    printf("fehler code: %d\n",WSAGetLastError());

  }


  else

  {

    printf("Socket erstellt!\n");

    sleep(2);

}


memset(&addr,0,sizeof(SOCKADDR_IN));

addr.sin_family=AF_INET;

addr.sin_port=htons(12345);

addr.sin_addr.s_addr=ADDR_ANY;

a=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));


if(a==SOCKET_ERROR)

{

printf("fehler code: %d\n",WSAGetLastError());

}


else

{

printf("Socket an port 12345 gebunden\n");

}

  getch();

}

aber wenn ich die beiden codes complimiere und dann den server starte und danach den client, krieg ich ne fehler meldung das der client sich nicht zum server verbunden hat.

woran kanns liegen ?

uhh, stimmt, da fehlt ja noch was.

jo ich weiss habs auch gerade gemerkt das ich es ausgelassen hab.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.