The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

BSD Sockets (ipx socket example)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: ipx, socket, example,  (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _ From : Vitaly E.Lavrov 2:5030/580 16 Oct 98 10:44:50 Subj : Re: BSD Sockets ________________________________________________________________________________ From: "Vitaly E.Lavrov" <[email protected]> Alex Stepanenko <[email protected]> wrote: > Приветствую, All! > Хто нить швыpялся IPX пакетами ETHERNET 802.3 из под LINUX или BSD ??? > Есть некое устpойство котоpое швыpяет те самые в сетку на мою каpточку > ETHERNET мне надо поймать и швыpнуть кой-че обpатно. Так ить под вындами > 95 и NT4 все pаботат как с pужжя. Сокеты откpываются, битндятся и т.д. > LINUX сокет откpывает но на bind отвечает что "Can not access request > address". Пpобовал заполнять стpуктуpу как в вындах, чеpез htons, чеpез > конвеpтилку со своей таблицей. е помогат. А BSD воаще пишет мол "Sockets > this type not support". е могу понять в где собака заpылась Ж(((. Пpежде > чем лезть в сыpцы pешил спpосить мож хто наезжал на ентот факт. Заpанее > благодаpен за любые мысли на енту тему. Я помню баловался с ipx под линухом. Вот сервер Правда с адресами машин разберайтесь сами. --------------------------------------- #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/time.h> #include <netinet/in.h> #include <linux/ipx.h> #include <netdb.h> #include <stdio.h> #include <fcntl.h> #include <signal.h> #include <sys/termios.h> #include <sys/ioctl.h> #include <errno.h> int fd = -1,fd1 = -1; char buf[1024]; main(int argn,char **argv) { int c,rhlen; struct sockaddr_ipx lh,rh; struct hostent *he; struct timeval tv; struct fd_set rfds,efds; fd1 = socket(AF_IPX,SOCK_DGRAM,AF_IPX); if (fd1 < 0) { perror("socket()"); exit(-1); } bzero ((char *) &lh, sizeof(lh)); lh.sipx_family = AF_IPX; lh.sipx_network = 0L; memset(lh.sipx_node,0,IPX_NODE_LEN); lh.sipx_port = 0xf034; /*00000F33:00A024EA2633*/ /* memcpy(&lh.sin_addr.s_addr,he->h_addr,he->h_length); lh.sin_port = htons(49); */ if(bind(fd1,(struct sockaddr *)&lh,sizeof(lh)) < 0) { perror("bind()"); return 0; } while(1) { rhlen = sizeof(rh); c = recvfrom(fd1,buf,sizeof(buf),0,(struct sockaddr *)&rh,&rhlen); if(c <= 0) { perror("recvfrom"); break; } /* printf("recv %d from %08x:%04x\n",c,rh.sipx_network,rh.sipx_port); */ sendto(fd1,buf,c,0,(struct sockaddr *)&rh,rhlen); } close(fd1); } -------------------------------------------- а вот клиент -------------------------------------------- #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/time.h> #include <netinet/in.h> #include <linux/ipx.h> #include <netdb.h> #include <stdio.h> #include <errno.h> #include <sys/times.h> #include <signal.h> #define UPS_TCP_PORT 49 #ifndef uchar typedef unsigned char uchar; #endif /* #ifndef ushort typedef unsigned short ushort; #endif #ifndef uint typedef unsigned int uint; #endif */ char buf[4098]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; char *printip(void *a) { static char buff[32]; unsigned char *p = a; sprintf(buff,"%d.%d.%d.%d",p[0],p[1],p[2],p[3]); return buff; } void alarmset(int s) { } int main(int argn,char **argv) { static struct hostent *hst; static int sk,rhlen; static struct sockaddr_ipx my_adr,rh; static int mal; static struct sockaddr_ipx ma; static struct sockaddr in_addr; struct hostent *mastent; static int c,i,ns; struct tms tm1,tm2; time_t t1,t2; /* if(gethostname(hstn,sizeof(hstn)) < 0) return 0; if(getdomainname(dmn,sizeof(dmn)) < 0) return 0; strcat(hstn,"."); strcat(hstn,dmn); printf("hostname()=%s\n",hstn); */ sk = socket(AF_IPX,SOCK_DGRAM,AF_IPX); if(sk < 0) { perror("open socket"); return 0;}; i = 1; rh.sipx_family = AF_IPX; rh.sipx_network = 0L; memset(rh.sipx_node,0,IPX_NODE_LEN); rh.sipx_port = 0xf036; rh.sipx_type = 4; if(bind(sk,(struct sockaddr *)&rh,sizeof(rh)) < 0) { perror("bind()"); return 0; } rh.sipx_family = AF_IPX; rh.sipx_network = 0x330F0000L; memset(rh.sipx_node,0xff,IPX_NODE_LEN); /* rh.sipx_node[0] = 0x33; rh.sipx_node[1] = 0x26; rh.sipx_node[2] = 0xEA; rh.sipx_node[3] = 0x24; rh.sipx_node[4] = 0xA0; rh.sipx_node[5] = 0x00; */ rh.sipx_port = 0xf034; rh.sipx_type = 4; time(&t1); ns = 0; for(i = 0; i < 1024*2; i++) { rhlen = sizeof(rh); c=sendto(sk,buf,1400,0,(struct sockaddr *)&rh,rhlen); if(c <= 0) perror("sendto"); signal(SIGALRM,alarmset); alarm(1); c = recvfrom(sk,buf,sizeof(buf),0,(struct sockaddr *)&rh,&rhlen); if(c <= 0) perror("recvfrom"); else ns++; /* printf("recv %d\n",c); */ } time(&t2); printf("time %d recv %d\n",(t2-t1),ns); close(sk); } ---------------------------------------------- PS: Да простит меня модератор. ююкнуть и гзипнуть очень лень. Виталий . --- ifmail v.2.13 * Origin: SPb State University of Aerospace Instrumentati (2:5030/580@fidonet)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру