Copa_7 Posted November 29, 2009 at 05:04 AM Report Share #297970 Posted November 29, 2009 at 05:04 AM Boas, eu quero enviar do cliente para o servidor duas palavras passadas por argumento do cliente. E o servidor tem que as guardar no buffer, mas em separado. No cliente tenho: msg_len=strlen(argv[1]); write(sockfd,argv[1],msg_len); msg_len=strlen(argv[2]); write(sockfd,argv[2],msg_len); No servidor tenho: int ReadLine(int sockfd,char* buffer,int maxlen){ int n,rc; char c; for(n=1;n<maxlen;n++){ if((rc=read(sockfd,&c,1))==1){ if(n==5) *buffer++=' '; if(n>5) *buffer++='*'; if(n<5) *buffer++=c; if(c=='\n') break; }else if (rc==0) { if(n==0) return(0); /*EOF*/ else break; /*EOF mas ja leu alguns dados*/ } else return(-1); /*Erro*/ } *buffer=0; return(n); } As condições de n com o valor 5, foi so para testar, porque o que queria la ter era o tamanho do primeiro argumento enviado. Como posso receber o tamanho do primeiro argumento enviado pelo cliente?? Link to comment Share on other sites More sharing options...
Copa_7 Posted December 2, 2009 at 12:45 AM Author Report Share #298343 Posted December 2, 2009 at 12:45 AM Ninguem me pode ajudar?? 🙂 Link to comment Share on other sites More sharing options...
TheDark Posted December 2, 2009 at 10:21 AM Report Share #298354 Posted December 2, 2009 at 10:21 AM Com um protocolo simples. Por exemplo, podes estabelecer que o 1º byte recebido é o tamanho do argumento. Assim, ao leres o 1º byte recebido para um unsigned char, ficas com o tamanho do argumento e já sabes quantos bytes tens que ler. Com 1 byte ficas limitado a um tamanho máximo de 255 bytes para o argumento. Se precisares de mais, defines que, em vez de ser só o 1º, são os 2 ou 4 primeiros bytes que definem o tamanho do argumento, e lê-los para um unsigned short ou unsigned long, para um tamanho máximo do argumento de, respectivamente, 65.535 ou 4.294.967.295, o que suponho que seja suficiente :🙂 Desaparecido. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now