D
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int startWinsock(void);
void main()
{
long rc;
SOCKET acceptSocket;
SOCKET connectedSocket;
SOCKADDR_IN addr;
char buf[256];
char buf2[300];
int buf1;
//Winsock starten
rc=startWinsock();
if(rc!=0)
{
cout<<"Fehler: startWinsock, fehler code: "<<rc<<endl;
getch();
}
else
{
cout<<"Winsock gestartet!"<<endl;
}
//Socket erstellen
acceptSocket=socket(AF_INET,SOCK_STREAM,0);
if(acceptSocket==INVALID_SOCKET)
{
cout<<"Fehler: Der Socket konnte nicht erstellt werden";
cout<<" fehler code: "<<WSAGetLastError()<<endl;
getch();
}
else
{
cout<<"Socket erstellt!"<<endl;
}
cout<<"Eingabe des Ports: ";
cin>>buf1;
//Socket binden
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(buf1);
addr.sin_addr.s_addr=ADDR_ANY;
rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
if(rc==SOCKET_ERROR)
{
cout<<"Fehler: bind, fehler code: "<<WSAGetLastError()<<endl;
getch();
}
else
{
cout<<"Socket an port "<<buf1 <<" gebunden"<<endl;
}
//In den listen Modus
rc=listen(acceptSocket,10);
if(rc==SOCKET_ERROR)
{
cout<<"Fehler: listen, fehler code: "<<WSAGetLastError()<<endl;
getch();
}
else
{
cout<<"acceptSocket ist im listen Modus...."<<endl;
}
//verbindung annehmen
connectedSocket=accept(acceptSocket,NULL,NULL);
if(connectedSocket==INVALID_SOCKET)
{
cout<<"Fehler: accept, fehler code: "<<WSAGetLastError()<<endl;
getch();
}
else
{
cout<<"Neue Verbindung wurde akzeptiert!"<<endl;
}
//Daten austauschen
while (rc!=SOCKET_ERROR)
{ //while auf
rc=recv(connectedSocket,buf,256,0);
if (rc==0)
{
cout<<"Server hat die Verbindung getrennt.."<<endl;
break;
}
if (rc==SOCKET_ERROR)
{
cout<<"Fehler: recv,fehler code: "<<WSAGetLastError()<<endl;
break;
}
buf [rc]='\0';
cout<<"Client sendet: "<<buf<<endl;
cout<<"\nZeichenfolge eingeben[max.256]: ";
gets(buf2);
rc=send(connectedSocket,buf2,strlen(buf2),0);
/*
sprintf(buf2,"du mich auch %s",buf);
rc=send(connectedSocket,buf2,strlen(buf2),0);
*/
} //while zu
closesocket (acceptSocket);
closesocket(connectedSocket);
WSACleanup;
//return 0;
}
int startWinsock(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}