using a udp protocol and datagrams services
here you are HollyShit chat program
client
server
here you are HollyShit chat program
client
كود PHP:
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define BUF 100
int main(int argc , char *argv[])
{
int sockfd;
int len;
socklen_t len2;
int z;
struct sockaddr_in my_addr;
struct sockaddr_in his_addr;
char lbuf[BUF];
char sbuf[BUF];
if(argc < 3 )
{
printf("[!]Usage %s ip port\n",argv[0]);
_exit(0);
}
printf("HollySHit Chating\n"
"Programming-Fr34ks[Dot]Net\n"
"Author : St0rM-MaN\n");
printf("[+]Creating Socket\n");
sockfd = socket(PF_INET , SOCK_DGRAM , 0);
if(sockfd < 0)
{
perror("[!]Socket()");
_exit(1);
}
memset(&my_addr , 0 , sizeof(my_addr));
memset(&his_addr , 0 , sizeof(his_addr));
printf("[+]Forming Address\n");
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(atoi(argv[2]);
my_addr.sin_addr.s_addr = INADDR_ANY;
his_addr.sin_family = AF_INET;
his_addr.sin_port = atoi(argv[2]);
his_addr.sin_addr.s_addr = inet_addr(argv[1]);
len2 = sizeof(his_addr);
len = sizeof(my_addr);
printf("[+]Binding Socket\n");
z = bind(sockfd , (struct sockaddr*)&my_addr , len);
if(z < 0)
{
perror("[!]Bind");
_exit(1);
}
while(1)
{
printf("Enter Your String\n");
fgets(sbuf , BUF , stdin);
z= strlen(sbuf);
sbuf[--z] = '\x0';
z = sendto(sockfd , sbuf , z , 0 ,
(struct sockaddr*)&his_addr, len2);
if(z < 0)
{
perror("[!]Sendto()");
_exit(1);
}
printf("Msg Sent To %s:%u\n",inet_ntoa(his_addr.sin_addr)
,ntohs(his_addr.sin_port));
z = recvfrom(sockfd , lbuf , BUF , 0 ,
(struct sockaddr*)&his_addr , &len2);
if(z < 0)
{
perror("[!]RecvFrom");
_exit(1);
}
lbuf[z] = '\x0';
printf("<%s:%u> says: %s\n",inet_ntoa(his_addr.sin_addr) ,
ntohs(his_addr.sin_port),lbuf);
}
return 0;
}
كود PHP:
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<errno.h>
#define MSGSIZ 1024
#define ERROR(X) perror(X);
int check(const char *string)
{
if(strstr(string , "QUIT") != NULL)
{
return 0;
}
return 1;
}
int main(int argc , char *argv[])
{
int sockfd; /*socket file descriptor*/
int z; /*function statues*/
int socklen;
int PORT;
socklen_t him_len; /*remore length*/
struct sockaddr_in i; /*local address*/
struct sockaddr_in him; /*remote address*/
char lmsg[MSGSIZ];
char smsg[MSGSIZ];
char *quit = "Bye Bye\n";
char *remote_addr;
if(argc < 2)
{
printf("[Usage..] <%s> portno\n",argv[0]);
_exit(1);
}
printf("HollySHit Chating\n"
"Programming-Fr34ks[Dot]Net\n"
"Author : St0rM-MaN\n");
i.sin_family = AF_INET;
i.sin_port = htons( atoi(argv[1]););
i.sin_addr.s_addr = INADDR_ANY; /*automaticaly pick local address (machine's)*/
socklen = sizeof(i); /*structure len*/
/*create a socket*/
printf("[+]Creating Socket\n");
sockfd = socket(PF_INET , SOCK_DGRAM , 0);
if(sockfd < 0)
ERROR("socket()");
printf("[+]Binding Socket\n");
z = bind(sockfd , (struct sockaddr*)&i , socklen); /*bind socket to our local address*/
if(z < 0)
ERROR("bind()");
printf("[+]Local Connection %s:%u\n",inet_ntoa(i.sin_addr) , ntohs(i.sin_port));
printf("[+]Waiting For Messages\n");
printf("-------------------------------------------------\n");
while(1)
{
him_len = sizeof(him);
z = recvfrom(sockfd, lmsg , MSGSIZ , 0 , (struct sockaddr*)&him , &him_len );
if(z < 0)
ERROR("recvfrom()");
lmsg[z] = '\x0';
z = check(lmsg);
if(z == 0)
{
shutdown(sockfd , SHUT_RD);
z = sendto(sockfd , quit , strlen(quit) , 0 , (struct sockaddr*)&him , him_len);
if(z < 0)
ERROR("sendto()");
}
remote_addr = inet_ntoa(him.sin_addr);
printf("<%s> sys %s\n",remote_addr , lmsg);
printf("your replay:");
fgets(smsg , MSGSIZ , stdin);
z= strlen(smsg);
smsg[--z]='\x0';
z = sendto(sockfd , smsg , z , 0 , (struct sockaddr*)&him , him_len);
if(z < 0)
ERROR("sendto()");
}
return 0;
}
تعليق