[Comm] read from socket

Nick S. Grechukh =?iso-8859-1?q?ngrechukh_=CE=C1_ua=2Efm?=
Пт Фев 11 15:41:33 MSK 2005


вот что-то в этом роде получилось, поругайте:

typedef struct {
 char signature[8];
 int command;
 size_t msgsize;
} ctrl_header;

int operate(int sock, sq_command command, void * response, size_t len_buff)
{
 char *recvbuf;
 int n;
 ctrl_header hdr;
 memcpy(hdr.signature,"SQ1.0.00\n",10);
 hdr.command=1;
 hdr.msgsize=0;
 n = send(sock, &hdr, sizeof(hdr),0);
 n = recv(sock, &hdr, sizeof(hdr),MSG_WAITALL);
 if ((n==sizeof(hdr)) && (strncmp(hdr.signature,"SQ1.0.00\n",10)==0)){
  if (hdr.msgsize>0){
   if ((recvbuf=malloc(hdr.msgsize))!=NULL){
    if ((n = recv(sock,recvbuf, hdr.msgsize, MSG_WAITALL))==hdr.msgsize){
     if ((response!=NULL) && (len_buff>=0)) {
      memcpy(response,recvbuf,len_buff);
     }
    } else {
     //maybe socket error, count of received data<than promised
    }
    free(recvbuf);
   } else {
    // allocation error
   };
  }
 } else {
  // maybe again socket error, or there is no squash on that side...
 }
 return(1);
}
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 190 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20050211/e13f7dee/attachment-0003.bin>


Подробная информация о списке рассылки community