61 YQOW3P7QFSX3DYON2SBHN5WJMH2K3YTRWWEKZZI YQOW3P7QFSX3DYON2SBHN5WJMH2K3YTRWWEKZZI


Problem in doing RAW SOCKET Programming The HyperNews Linux KHG Discussion Pages Problem in doing RAW SOCKET ProgrammingForum: The Linux Kernel Hackers' GuideKeywords: Client server program using Raw sockets.Date: Wed, 30 Apr 1997 15:39:27 GMTFrom: anjali sharma <asharm@acadcomp.cmp.ilstu.edu>I have to write a client server program using raw socket. I have written the code for client as well as server but when ever I run it my server hangs up. So I have to reboot the server. I think there is problem with my send and receive. I am sending the code for server. Hope you would be able to help me.@@@@@@@@@@@@@@@@@@@@@@@ code @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#include <stdio.h>#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h>#include <netinet/ip.h> #include <netinet/ip_icmp.h>u_short portbase = 0; long time();#define qlen 6 #define protocol "raw" #ifdef REALLY_RAW #define FIX(x) htons(x) #else #define FIX(x) (x) #endifmain(int argc, char **argv) { int msock, ssock; int alen; char buf[] = "asdfgh"; char recv_buffer[20]; struct servent *pse; struct protoent *ppe; struct sockaddr_in dst; struct hostent *hp; struct ip *ip = (struct ip *)buf; struct icmp *icmp = (struct icmp *)(ip +1); int s, type, dstL; int q, bind1, lis; int sockopt; int on = 1, address; int offset; int sendbuff; int n; bzero((char *)&dst, sizeof(dst)); dst.sin_family = AF_INET; dst.sin_port = 6000; ppe = getprotobyname("raw"); setbuf(stdout,NULL); s = socket(AF_INET, SOCK_RAW, 0); printf("\n%d value of s in servsock",s); if (s < 0) printf("\nCann't creat socket"); setbuf(stdout,NULL); sockopt = setsockopt(s, 0, IP_HDRINCL, &on, sizeof(on)); printf("\n%d value of sockopt", sockopt); if (sockopt < 0) exit(0); if(( hp = gethostbyname(argv[1])) == NULL){ if(ip->ip_dst.s_addr = inet_addr(argv[1]) == -1) printf("\nERROR: UNKNOWN HOST"); } else bcopy(hp->h_addr_list[0], &ip->ip_dst.s_addr, hp->h_length); printf("\nSending to %s\n", inet_ntoa(ip->ip_dst)); ip->ip_v = 4; fflush(stdin); ip->ip_hl = sizeof *ip >> 2; ip>ip_tos = 0; ip->ip_len = sizeof buf; ip->ip_id = htons(4321); ip->ip_off = 0; ip->ip_ttl = 255; ip->ip_p = 1; ip->ip_sum = 0; ip->ip_src.s_addr = 0; dst.sin_addr = ip->ip_dst; dst.sin_family = AF_INET; icmp->icmp_type = ICMP_ECHO; icmp->icmp_code = 0; sendbuff = sendto(s, buf, sizeof buf, 0, (struct sockaddr *) &dst, sizeof dst); if(sendbuff < 0) printf(" ERROR sending "); if ( sendbuff != sizeof buf) printf("ERROR packet size"); printf("\n buf is %s value of send is %d ", buf, sendbuff); dstL = sizeof dst; n = recvfrom(s, recv_buffer, sizeof(recv_buffer), 0, (struct sockaddr *) &dst,&dstL);printf("recv buffer is%s value of n is %d\n", recv_buffer,n); close(s); exit(0); } @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ to: "Problem in doing RAW SOCKET Programming" 

Wyszukiwarka

Podobne podstrony:
p (61)
action=produkty wyswietl&todo=koszyk&produkt=61&key=
618
Dz U 03 61 552 sposób oznakowania miejsc służących do przechowywania lub zawierających substancj
listscript fcgi id=61
IZ IP 61
cmd=kom jedno,61&serwis=6
Finanse Rynek finansowy publiczny obrót papierami wartościowymi (str 61)
61 (19)
Mazowieckie Studia Humanistyczne r2001 t7 n2 s51 61

więcej podobnych podstron