Avatar billede ehv Nybegynder
08. maj 2003 - 07:53 Der er 1 kommentar og
1 løsning

kan man sende en variabel afsted indeholdende værdien fra det før

g++ / linux
mit problem er som det første at jeg ikke ved om det overhoved kan lade sig gøre at sende en variabel af sted og i så fald er der en der har et ide forslag til dette.
jeg har forsøgt mig med noget så simpelt som:

char *q= "9";
char *retrbuf_out= "RETR q\r\n";
cout <<"Besked: " <<retrbuf_out <<endl <<"Længden: " <<strlen( retrbuf_out ) <<endl;
if( send( sockfd, retrbuf_out, strlen( retrbuf_out ), 0) == -1 )
cout <<"Fejl ved afsending af beskeden: " <<retrbuf_out <<endl;

bare for at finde lidt ud af hvordan man gør den slags =)
det virker hvis jeg indsætter værdien 9 direkte i min RECV men det skulle gerne være en smule mere fleksibelt.
Please, Please help me.
Avatar billede arne_v Ekspert
08. maj 2003 - 07:56 #1
Det vil nok ikke virke som du tror.

Du vil bare sende RETR q.

Mit forslag:

char *q= "9";
char retrbuf_out[100];
sprintf(retrbuf_out,"RETR %s\r\n",q);;
cout <<"Besked: " <<retrbuf_out <<endl <<"Længden: " <<strlen( retrbuf_out ) <<endl;
if( send( sockfd, retrbuf_out, strlen( retrbuf_out ), 0) == -1 )
cout <<"Fejl ved afsending af beskeden: " <<retrbuf_out <<endl;
Avatar billede mickni33 Nybegynder
08. maj 2003 - 09:51 #2
jeg går ud fra at du har sat dine IP, og har valgt din Port og de der'sens ting.
Håber det virker jeg har taget en copy paste og slettet lidt fra et af mine programmer

PS. dette er til windows. Jeg mener at man bruger read() og write() i Linux, istedet for send() og recv() som bruges af Win

/*Klientsiden:
//////////////////////////////////////////////////////////////////////*/
char* Buffer="fra clienten";

int nRet = send(theSockfd,Buffer,strlen(Buffer),0);
    if (nRet == -1)
    {closesocket(theSocket);
    }

*//////////////////////////////////////////////////
serversiden: skal køre i en while(1) løkke
//////////////////////////////////////*/
char Buf[20];
SOCKET    listenSocket;
listenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN saServer;       
saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = INADDR_ANY;
saServer.sin_port = htons(14000);
int nRet;
nRet = bind(listenSocket,(LPSOCKADDR)&saServer,sizeof(struct sockaddr));
int nLen;
nLen = sizeof(SOCKADDR);
cout<<"\nServer waiting :";
cout<<"\nlytter";
nRet = listen(listenSocket, SOMAXCONN);                   
  while(1){
    printf("\nBlocking at accept()");
  SOCKET    remoteSocket;
  remoteSocket = accept(listenSocket,NULL,NULL);

nRet = recv(remoteSocket,client,Buf,sizeof(Buf),0);
   
  }
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