021
08.09.2005, 18:14 Uhr
Michi
|
Hallo, Ich mir jetzt was geschrieben, was aber nicht funktioniert. Ich schätze es hat was mit dem binären öffnen oder so zu tun, da wenn ich es normal öffne, und dann den text sende und in eine andere textdatei schreibe, funktioniert es, also hier der code:
Server:
Code: |
#include <windows.h> #include <winsock.h> #include <stdio.h> #include <fstream.h>
//Prototypen int startWinsock(void);
int main() { long rc; SOCKET acceptSocket; SOCKET connectedSocket; SOCKADDR_IN addr; char buf[2048];
// Winsock starten rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return 1; } else { printf("Winsock gestartet!\n"); }
// Socket erstellen acceptSocket=socket(AF_INET,SOCK_STREAM,0); if(acceptSocket==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Socket erstellt!\n"); }
// Socket binden memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(12345); addr.sin_addr.s_addr=inet_addr("127.0.0.1"); rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)); if(rc==SOCKET_ERROR) { printf("Fehler: bind, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Socket an port 12345 gebunden\n"); }
// In den listen Modus rc=listen(acceptSocket,10); if(rc==SOCKET_ERROR) { printf("Fehler: listen, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("acceptSocket ist im listen Modus....\n"); }
// Verbindung annehmen connectedSocket=accept(acceptSocket,NULL,NULL); if(connectedSocket==INVALID_SOCKET) { printf("Fehler: accept, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Neue Verbindung wurde akzeptiert!\n"); }
// Daten austauschen
recv(acceptSocket, buf, 1024,0); ofstream datei; datei.open("D:\\neu.wav",ios::out|ios::binary); datei.write(buf, sizeof(buf)); printf("Fertig");
closesocket(acceptSocket); closesocket(connectedSocket); WSACleanup(); return 0; }
int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
|
Client:
Code: |
#include <windows.h> #include <winsock.h> #include <stdio.h> #include <fstream.h>
//Prototypen int startWinsock(void);
int main() { long rc; SOCKET s; SOCKADDR_IN addr; char buf[2048];
// Winsock starten rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return 1; } else { printf("Winsock gestartet!\n"); }
// Socket erstellen s=socket(AF_INET,SOCK_STREAM,0); if(s==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Socket erstellt!\n"); }
// Verbinden 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
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); if(rc==SOCKET_ERROR) { printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Verbunden mit 127.0.0.1..\n"); }
// Daten austauschen
ifstream datei; datei.open("D:\\test.wav", ios::in|ios::binary); datei.read(buf, sizeof(buf)); send(s, buf, sizeof(buf),0); printf("Fertig"); closesocket(s); WSACleanup(); return 0; }
int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
|
-- _____________________________________ _____________Open Source_____________ ___Das Wissen, gehört der Menschheit____ |