koledzy, pomozcie...

Autor: Lech Wiktor Piotrowski (lewhoo_at_teamos2.org.pl)
Data: Mon 28 May 2001 - 20:27:30 MET DST


nie na te liste, bo to na (fuuj) linuxie, jako ze na taki system piszemy na uczelni, ale pisze
program na zaliczenie i mi sie wywala na segmentation fault. Jest to prosty klient muda.
Wyswietla po negocjacji 4 linijki, po czym pada. Ponizej kawalek kodu, ktory za te 4
linijki jest odpowiedzialny. Burdel straszny, bo probowalem wielu rzeczy, ale naprawde
nie mam pomyslu. Przynajmniej juz wiem, ze to nie jest wywloanie pthread ani kwestia
malloca (static const daje to samo). W zalaczniku pelny source (mam nadzieje, ze nikt
sie nie pogniewa za to...

  pthread_t tid1;
  void *arg, *arg1;
  arg=&sock;
  void *f(void *s);
// *f=&sendrecv;
// pthread_create(&tid1, NULL, sendrecv, (void *)&sock);
sendrecv((void *)&sock);
  // sendrecv(sock);
}
 

void *sendrecv(void *sock)
{
  char *rbuffer=(char *)malloc(1025);
  int ret = 1;
  int i=0, y=0;
  char *send_buffer=(char *)malloc(1025);
 int blad;
  char zwrot[32];
  int dontblock;
  char *bladc = (char *)malloc(30);
  int c[2000];
  int c_count=0;
  while (ret!=-1)
  {
  dontblock=1;
// ioctl((int)sock, O_NONBLOCK, &dontblock, sizeof(dontblock));
  //Sets the non-blocking mode
  ret = recv((int)sock, rbuffer, 1024, 0);
   
   i = 0;
   y = 0;
// if(errno!=11)
// {
// memset(&send_buffer, 0, 1025);
/*
while(i!=ret)
        {
                if(rbuffer[i]!=0x0D)
                {
                        send_buffer[y] = rbuffer[i];
                        y++;
                }
                i++;
        }
*/
strcpy(send_buffer, rbuffer);
    cout << send_buffer;
// }
// if(errno==11 && ret==-1) ret=0;
// dontblock=0;
// ioctl((int)sock, O_NONBLOCK, (char *) &dontblock, sizeof(dontblock));
/* c[c_count]=_read_kbd(0,0,0);
    if(c[c_count]!=-1) c_count++;
    if(c[c_count]==0x0D)
    {
      blad = send(sock, "aaa", strlen("aaa"), 0);
      if(blad==-1) return;
      blad = send(sock, "\n", strlen("\n"), 0);
      if(blad==-1) return;
      c_count=0;
    }
  */
/* blad = send(sock, "aaa", 4, 0);
      if(blad==-1) return;
      blad = send(sock, "\n", 2, 0);
      if(blad==-1) return; */
// DosSleep(5);
  }

-------------------------------------------------------------------------------------------------
Lech Wiktor Piotrowski | ICQ#: 50746253 | lewhoo_at_teamos2.org.pl
TeamOS/2 Poland Webmaster - http://www.teamos2.org.pl
Inne systemy maja uzytkownikow, OS/2 ma wyznawcow
My home OS/2 system uptime is: : 2d 4h 45m 38s 406ms (en).
----------------------------------------------- -------------------------------------------------




To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:32:04 MET DST