![]() |
|
Register | FAQ | The Twelve Commandments | Members List | Calendar | Arcade | Find the Best VPN | Today's Posts | Search |
General Gnutella Development Discussion For general discussion about Gnutella development. |
![]() |
| LinkBack ![]() | Thread Tools ![]() | Display Modes ![]() |
| |||
![]() Hi, I am currently writing a simple gnutella client as my thesis. But I am stucked at the moment. My question might not be of common interest. If so please state do you know any list or forum to ask for help. Anyway, I have used Gnutella protocol draft at rfc-gnutella.sourceforge.net. So far I have achieved connecting to the network using GnuWebCaches. I receive a 200 OK messega from a connected client. So up to this point everything must be fine. But then I send a ping message and wait for a pong. But nothing is received. Only send returns 0. My C code, struct ping_header { char GUID[16]; char Payload_Type; char TTL; char Hops; char Payload_Len[4]; }; struct ping_header *get_ping_header(void) { struct ping_header *p_head; p_head = (struct ping_header *)malloc(sizeof(struct ping_header)); p_head = (struct ping_header *)malloc(sizeof(struct ping_header)); strcpy(p_head->GUID,"jhwerdkrodmwjydh"); p_head->Payload_Type = '0'; p_head->TTL = '2'; p_head->Hops = '0'; strcpy(p_head->Payload_Len,"0"); return p_head; } ... ... send(sockfd, get_ping_header(), sizeof(struct ping_header), 0); memset(buf, '\0', 1024); while (1) { i = recv(sockfd, buf, 1024, 0); if(i>=0) { printf("\n<%d> bytes data received\n", i); printf("\nPing is answered as %s\n", buf); } } Kaan Coskun |
| |||
![]() 1) You should use char as bytes and not as characters. I mean, you send the character "0" as payload Type. But the char "0" as not the byte value 0x00 that is the type of a ping. So send 0x00 instead of "0". You should act like this for all the other fields. 2) in you message you say you receive OK from a remote client. Have you send OK too as the draft speficy it (section handshake) before send the ping? Hope this could be helpful regards, |
| |||
![]() Thanks for your help. It was very helpfull. It turned out to be that my payload_length field should be an integer not a char array. Here is the solution, struct ping_header { char GUID[16]; char Payload_Type; char TTL; char Hops; int Payload_Len; <------------ }; struct ping_header *get_ping_header(void) { struct ping_header *p_head; p_head = (struct ping_header *)malloc(sizeof(struct ping_header)); strcpy(p_head->GUID,"jhwerdkrodmwjydh"); p_head->Payload_Type = '0'; p_head->TTL = '2'; p_head->Hops = '0'; p_head->Payload_Len = 0; <------------ return p_head; } ![]() ![]() But I had another issue. So I was not able to even try the advisory. The clients I received from the GnuWebCaches didn't seem to be accepting me anymore. They generally responded 503 Gnutella unavaible. Is it normal. I guess I am in a ban list or something like that. |
| |||
![]() okay, be just careful that an int can be different that 4 bytes on somes machines and langages. (for instance an integer can be 16 or 32 bits long...) Did you receive Pongs? I don't think your Payload_type field is right. You have: char Payload_Type; ... and: p_head->Payload_Type = '0'; but the char '0' as you write has as ASCII Code 0x30 and not 0x00 so code instead: p_head->Payload_Type = 0x00; Concerning the non responding hosts and clients, i have exactly the same problem with the client I develop. Nearly all the servents are busy, and it's a real problem |
| |||
![]() I was mistaken with that I received any pongs. I just received a ping request from the servant. I have changed the payload type. But still seem to be there is a problem. I receive nothing. If you have your code I would be grateful to see the basic parts that handles sending and receiving pings. Altough I know only C I think I shouldn't mind seeing codes written in other languages. zomlakNO@SPAMhotmail.com, kcoskunNO@SPAMknuth.cs.bilgi.edu.tr |
![]() |
| |
![]() | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Have not received LimeWire Pro | margaret savage | Open Discussion topics | 1 | June 12th, 2006 03:53 PM |
Purchased LW Pro but only received Basi | Canuck | Windows | 8 | October 3rd, 2005 01:37 PM |
never received download e-mail | jstchln28 | Chat - Open Topics - The Lounge | 1 | August 11th, 2005 01:18 PM |
Received Incoming this session...Help!!! | hecubusx | Download/Upload Problems | 0 | August 22nd, 2004 01:59 PM |
r 0.6.8 RED "Received(Dropped)" | lightstone | General Discussion | 1 | March 13th, 2001 02:02 PM |