I had two python programs, server.py and client.py(attached) With server.py in a kernel 2.6.21-rc5 x86_64 and client.py in the same machine, server.py get the message. With server.py in a kerner 2.6.21-rc5 x86_64 and client.py in another machine, server.py don't get the message. The same with the programs in c(attached). With kernel 2.6.20.3 the programs work well. Thanks. Jose Alberto
Attachment:
client.py
Description: application/python
#include <sys/socket.h> #include <netinet/in.h> #include <string.h> main() { int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); struct sockaddr_in ClientAddr; memset(&ClientAddr, 0, sizeof(ClientAddr)); ClientAddr.sin_family = AF_INET; ClientAddr.sin_addr.s_addr = inet_addr("227.234.253.9"); int port = 15922; ClientAddr.sin_port = htons((short) port); char str[] = "Hello, world"; sendto(sock, str, strlen(str), 0, (struct sockaddr *)&ClientAddr, sizeof(ClientAddr)); close(sock); }
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <stdio.h> main() { struct sockaddr_in ServerAddr; int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); int reuse = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(int)); memset(&ServerAddr, 0, sizeof(ServerAddr)); ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY); int port = 15922; ServerAddr.sin_port = htons((short) port); bind(sock, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr)); struct ip_mreq mreq; memset(&mreq, 0, sizeof(mreq)); mreq.imr_multiaddr.s_addr = inet_addr("227.234.253.9"); mreq.imr_interface.s_addr = htonl(INADDR_ANY); setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)); char str[100]; memset(&str, 0, sizeof(str)); recv(sock, str, 100, 0); printf(":%s:\n", str); close (sock); }
Attachment:
server.py
Description: application/python