예제 #1
0
static unsigned int sample(
unsigned int hooknum,
struct sk_buff * skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn) (struct sk_buff *))
{
    __be32 sip;
    /*
    ((unsigned char *)&server)[0] = 192;
    ((unsigned char *)&server)[1] = 168;
    ((unsigned char *)&server)[2] = 22;
    ((unsigned char *)&server)[3] = 21;
    */
 	if(skb && pid!=0)
 	{
 		struct iphdr *iph;
		struct sk_buff *sb = NULL;
		
		sb = skb;
		iph  = ip_hdr(sb);
		sip = iph->saddr;
		if(((unsigned char *)&sip)[0] == 10 && iph->protocol != 0x11)
		{
			sendMSG(sip);
		}
	}
	return NF_ACCEPT;
}
예제 #2
0
/************************************************************
 // Function Name: main
 // Parameters: int argc, char *argv[]
 // Description: Gets handle and sets up connection to server,
 // runs chat until timeout or user types "quit".
 ************************************************************/
int main(int argc, char *argv[])
{
    int sockfd, portno, quit;
    struct sockaddr_in serv_addr;
    struct hostent *server;
	char handle[256];
	
	//checks if arguments match up
    if (argc < 3) {
		fprintf(stderr,"usage %s error requires 3 arguments\n", argv[0]);
		exit(0);
    }
	
	printf("What is your handle?\n");
	fgets(handle,sizeof(handle),stdin);
	handle[ strlen ( handle ) - 1 ] = '\0';
	
	//get reference for socket using port number from argument
	portno = atoi(argv[2]);
	sockfd = socket(AF_INET, SOCK_STREAM, 0);
	if (sockfd < 0) 
		error("ERROR opening socket");
	
	//checks if servername is valid
	server = gethostbyname(argv[1]);
	if (server == NULL) {
		fprintf(stderr,"ERROR, no such host\n");
		exit(0);
	}
	//zeros out struct and fills it in
	bzero((char *) &serv_addr, sizeof(serv_addr));
	serv_addr.sin_family = AF_INET;
	bcopy((char *)server->h_addr, 
		  (char *)&serv_addr.sin_addr.s_addr,
		  server->h_length);
	serv_addr.sin_port = htons(portno);
	
	//connecting to socket
	if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) 
		error("ERROR connecting");  
	
	printf("Now connected\n");
	printf("Please enter the message: please type \"quit\" to exit chat.\n");
	quit = 0;
	while(quit != 1)
	{
		quit = sendMSG(sockfd,handle);
		if(quit != 1)
			quit = recvMSG(sockfd);	
	}
	printf("Connection closed\n");
	close(sockfd);
	return 0;
}
예제 #3
0
void MyServerThread::run()
{
    //std::cout<<"hi"<<std::endl;
    /*for(int i=0;i<16;i++)
        {
         matrix[i]=(float)i+1;
         std::cerr<<"matrix:" << matrix[i] << std::endl;
        }*/
    memcpy(buf,matrix,sizeof(float)*16);
    sendMSG();
}
예제 #4
0
파일: testfifonet.c 프로젝트: 0x42/fire
/* ----------------------------------------------------------------------------
 * @brief	отправляем сообщение SET length=10 msg size = 9
 */
TEST(fifo, sendSETL10MSG9) /* NEED RUN SERVER */
{
	printf("sendSETL10MSG9() ... \n");
	int ans = 0;
	int exec = 1;
	int sock;
	unsigned char msg[10] = "AAAAAAAAA";
	unsigned char *buf;
	int bufSize = 0;
	int msgSize = 9;
	int length = 10;
	ans = sendMSG(msg, msgSize, length);
	TEST_ASSERT_EQUAL(-100, ans);
}
예제 #5
0
파일: login.c 프로젝트: sysprog1516/sysprog
void* loginThreadHandler (void* port)
{
	int loginPort = (*((int*)port));
	pthread_t clientthread [MAX_PLAYERS];
	struct sockaddr_in serverAddr;
	int listensocket , tcpsocket;

	tcpsocket = socket(AF_INET,SOCK_STREAM,0);
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_port = htons(loginPort);
	serverAddr.sin_addr.s_addr = INADDR_ANY;

	 //Bind
    if( bind(tcpsocket,(struct sockaddr *)&serverAddr , sizeof(struct serverAddr)) < 0)
    {
        //print the error message
        perror("[server]bind failed. error\n");
        close(tcpsocket);
        return 1;
    }
    puts("[server]bind successfull");

    //Listen
    if( listen( tcpsocket, 3 ) < 0 )
	{
		errorPrint("[server]listen error ");
		close(tcpsocket);
		return -1;
	}
    puts("[server]listening ,waiting for incoming connections...\n");


	listensocket = accept(loginPort,NULL ,NULL);

	printf ("[login] listensocket: %d \n",listensocket);
	if (listensocket == -1)
	{
		printf ("[login]listensocket shitti , try new port.\n");
		exit(0);
	}
	

	initialisePlayers(); 	// Setzt alle Sockets auf -1
	//Warte bis vier Spieler verbunden. Vorher hörst du den Clients zu, guckst erstens ob der Startgame definitiv vom Leiter kommt
		//und ob auch vier Spieler (clientCount?) eingeloggt sind!
	//Dann könnts los gehen. Wenn startgame nachricht an nicht leiter geht, virtuel den Startbutton bei den dreien klicken (optional)

//====================================Los geht's, warten wir auf verbindungsfreudige Clienten==================================
	while (1)
	{
		printf ("[login] ready to connect\n");
		int sendsocket = acceptConnection (listensocket);

		printf ("[login] Sendsocket %d \n",sendsocket);

		printf ("[login] Waiting for message from client \n");
		MESSAGE lrqMsg;
		MTYPE type = 0;

		type = recvMSG (sendsocket, &lrqMsg);

		if (type == MTYPE_LRQ)
		{
		 
			if (1)
			{		
				printf("ok alles klar soweit");
			}
			else
			{
				MESSAGE errMsg = createERR (ERR_SUBTYPE_FATAL,"***[login] Ungültige RFC Version! ( !=8)***\n");
				sendMSG (sendsocket,&errMsg);
				close (sendsocket);
			}
		}
		else
		{
			MESSAGE errMsg;
			if (getID () == -1)
			{
				errMsg = createERR (ERR_SUBTYPE_FATAL,"***[login] Server voll!***\n");
			}
			sendMSG (sendsocket,&errMsg);
			close (sendsocket);
		}
	}
	return NULL;
}