Avatar billede bentblod Nybegynder
11. januar 2005 - 16:28 Der er 6 kommentarer og
1 løsning

Netværks klient

Hej, jeg sidder og arbejder lidt med at få en netværksforbindelse til at virke, sidder og laver det efter en bog.... Men er åbenbart en fejl i bogen (hurra hurra) så der er en fejl i klienten! Nogen der gider hjælpe mig med at finde den fejl så jeg kan komme videre med at lære netværksprogrammering?

Copy paster koden herunder og fejlmeddelelsen

----------klient.h----------------

#include <winsock2.h>

class Klient{
public:
  void Connect(int port, char *adr);
  void SendMsg(char *pmsg);
  void CloseCon();
private:
  int fd;
  sockaddr_in = saddr;
  WSADATA wlib;
  int n0k;
};


----------klient.cpp-----------

#include<iostream>
using namespace std;
#include <winsock2.h>
#include "klient.h"

void Klient::Connect(int port, char *adr){
  WSAStartup(0x0101,&wlib);
  fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  saddr.sin_family = AF_INET;
  saddr.sin_port = htons(port);
  saddr.sin_addr.s_addr = inet_addr(adr);
  connect(fd, (sockaddr *) &saddr, sizeof(saddr));
}

void Klient::SendMsg(char *pmsg){
  if((n0k=send(fd,pmsg,100,0)) == -1){
    cout<<"Kunne ikke sende!"<<endl;
    exit(1);
  }
}

void Klient::CloseCon(){
  closesocket(fd);
  WSACleanup();
}


-----------startklient.h-------------------

char msg[100];
char stop;


-----------startklient.cpp-----------------

#include<iostream>
using namespace std;
#include "klient.h"
#include"startklient.h"

int main(){
  Klient k;
  k.Connect(7777,"localhost");
  do{
    cout<<"Send data til serveren " <<endl;
    cin>>msg;
    k.SendMsg(msg);
    cout<<"Tast n for at stoppe"<<endl;
    cin>>stop;
  }
  while(stop!='n');
  k.CloseCon();
}
Avatar billede bentblod Nybegynder
11. januar 2005 - 16:28 #1
fejlmeddelelsen:

bcc32 -D_DEBUG -g100 -j25 -Od -r- -k -y -v -vi- -tWC -c -IC:\CBuilderX\include  -n"D:\c++ programmering\netværksklient\windows\Debug_Build"  klient.cpp startklient.cpp
Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland
klient.cpp:
"klient.h": E2040 Declaration terminated incorrectly at line 10
"klient.cpp": E2451 Undefined symbol 'saddr' in function Klient::Connect(int,char *) at line 9
"klient.cpp": E2109 Not an allowed type in function Klient::Connect(int,char *) at line 12
"klient.cpp": W8057 Parameter 'port' is never used in function Klient::Connect(int,char *) at line 13
"klient.cpp": W8057 Parameter 'adr' is never used in function Klient::Connect(int,char *) at line 13
*** 3 errors in Compile ***
startklient.cpp:
"klient.h": E2040 Declaration terminated incorrectly at line 10
*** 1 errors in Compile ***
BCC32 exited with error code: 1
Build cancelled due to errors
Avatar billede arne_v Ekspert
11. januar 2005 - 16:32 #2
skal

sockaddr_in = saddr;

ikke være

sockaddr_in saddr;
Avatar billede arne_v Ekspert
11. januar 2005 - 16:34 #3
Jeg vil iøvrigt kraftigt fraråde den måde du kalder WSAStartup på i Connect
og WSACleanup i CloseCon.

Overvej hvad der sker hvis du har flere connections !
Avatar billede bentblod Nybegynder
11. januar 2005 - 16:34 #4
wee nice nok :) Og så var det åbenbart ikke bogen alligevel.. bare en fejl 40 -_- Tak arne ^^ skriv lige som svar igen ^^
Avatar billede zapzap Nybegynder
11. januar 2005 - 16:34 #5
I klient.h

sockaddr_in = saddr;

Det ser skummelt ud. Fjern =
Avatar billede zapzap Nybegynder
11. januar 2005 - 16:40 #6
Se bort fra mit svar, Arne var der først.
Avatar billede arne_v Ekspert
11. januar 2005 - 16:41 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester