PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Socket Programmierung



xmarvel
31-08-2002, 11:42
hi

Wie kann ich ein einzelnes Wort (String) über das Netzwerk verschicken ? Und das zwischen Linux und Windows. Müsste ja dann C bzw. mit C++ programmiert werden. Gibt es dazu irgendwelche tutorials oder hat das schon jemand gemacht ?

Bin für jede Hilfe dankbar
xmarvel

tkortkamp
31-08-2002, 13:21
http://www.mrunix.de/forums/showthread.php?s=&postid=126750#post126750

xmarvel
31-08-2002, 15:04
Leider hilft mir das nicht so richtig.
Unter Linux habe ich ja schon Sockets programmiert.
Aber ich will das Linux der Server ist und Windows der Client also muss ich irgendwie mit zwei verschiedenen OS eine Verbindung aufbauen. Da aber beide verschiedene Héader benutzen weiss ich nicht wie man das anstellt. Da ich ja nicht einfach den Quellcode von Linux in Windows importieren kann.
Oder gibt es einfach kein Unterschied wenn ich einfach was auf dem Port was schreibe ?

MFG
xmarvel

tkortkamp
31-08-2002, 16:21
Bin mir da jetzt nicht so sicher, aber ich denke, dass es keine großen Unterschied zwischen den Socket-Funktionen von Windows und Linux gibt, da Windows schließlich den BSD-Socket-Layer benutzt.

Unter http://www.zotteljedi.de/socket-tipps.html#voraus findet man übrigens folgende Informationen (die Seite war übrigens über den obigen Link erreichbar :p):


Unter Windows muss die Header-Datei winsock.h eingebunden werden, sowie beim
Compilerlauf die Bilbiothek wsock32.lib. Ausserdem müssen die Sockets (und das ist
wichtig, weil sonst absolut nichts geht - ich werde im Folgenden auch nicht mehr darauf
hinweisen, da es eine Windows-Spezialität ist und bei Unix nicht nötig ist) "angeschaltet"
werden. Dies erledigt WSAStartup(). Am einfachsten macht man dies, indem man den
folgenden Codeausschnitt einfügt:


/* initialize windows sockets */
{
WSADATA wsa;
if (WSAStartup(MAKEWORD(1, 1), &wsa))
{
printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError());
return EXIT_FAILURE;
}
}

wobei dies am Günstigsten gleich zu Beginn in main() erledigt wird, bevor es noch
vergessen geht. Ausserdem verwendet Windows den Typ SOCKET statt int für Sockets
sowie SOCKET_ERROR statt -1 bei Fehlern von socket(). Dies ist jedoch nur der Form
halber, da int auch funktioniert ;-)


c ya,
Tobias

xmarvel
31-08-2002, 16:38
ups nicht so schnell gelesen :rolleyes: *sorry*
Hat jetzt funktioniert *thx*