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.
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;
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);
}