Stoppt die Vorratsdatenspeicherung! Jetzt klicken && handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
 
Winsock
von Plapperkatze am 31.Januar 2006 um 16:29
zurück zur Kategorie "Tutorials"

Mit der Sockets-API von Win lassen sich TCP/IP und UPD-Verbindungen erstellen und benutzen.

Die Beispiele lassen sich mit bcc32 als Konsolenprogramme kompilieren.

Die API-Funktionen müssen verfügbar sein:
#include <winsock2.h>

Das Socket-System muss initialisiert werden:
WSADATA wsa;
if(WSAStartup(MAKEWORD(2,0),&wsa)!=0)return -1;

Nun kann ein Socket erstellt werden:
SOCKET s=socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET){WSACleanup();return -1;}

Jetzt kann mit connect(SOCKET s,SOCKADDR &addr,sizeof(SOCKADDR)) eine Verbindung erstellt werden. Die Verbindungsdaten müssen in einer SOCKADDR_IN Struktur vorliegen.
SOCKADDR_IN addr;
memset(&addr,0,sizeof(SOCKADDR_IN)); // auf 0 setzen
addr.sin_family=AF_INET;
addr.sin_port=htons(6889); // port
addr.sin_addr.s_addr=inet_addr("127.0.0.1"); // zieladresse
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
if(rc==SOCKET_ERROR){closesocket(s);WSACleanup();return -1;}

Nun können Daten mit send(SOCKET s,char *buf,strlen(buf),0) gesendet werden.
recv(SOCKET s,char *buf,255,0) liest wiederum maximal 255 Bytes in buf ein. Wenn die Verbindung von Seiten des Zielrechners getrennt wird, gibt recv 0 zurück, im Fehlerfall SOCKET_ERROR, bei Erfolg die Anzahl der empfangenen Bytes.
while(1)
{
   sprintf(buf,"mein text");
   gets(buf);
   send(s,buf,strlen(buf),0);
   rc=recv(s,buf,255,0);
   if(rc==0||rc==SOCKET_ERROR)break;
   buf[rc]='\0';
   printf("Antwort: %s\n",buf);
}

Am Ende wird der Socket geschlossen und das Socket-System mit WSACleanup() "aufgeräumt":
closesocket(s);
WSACleanup();

Einige sehr gute Tutorials zu dem Thema findet man hier:
http://www.c-worker.ch/tuts.html

grüsse, die plapperkatz

zurück zur Kategorie "Tutorials"
[0 Kommentare]

Name


Kommentar




Bitte abtippen


 
(C) 2006-20012 Plapperkatze - 220706 Besucher seit dem 23.01.2012 Login