Jump to content
Nytro

TCPUDP in C

Recommended Posts

Posted

[h=1]TCPUDP in C[/h]

/*

============================================================================

Name : TCPServer.c

Author : www.facebook.com/unix4u

Version :

Copyright : LGPL

Description : TCP-SERVER IN C, Ansi-style

============================================================================

*/

#include <stdio.h>

#include <stdlib.h>

#include <netinet/in.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <errno.h>

#include <unistd.h>

#include <string.h>

#include <signal.h>

void signalhandler(int signum)

{

if(SIGTERM==signum)

{

printf("See you later bye\n");

exit(SIGTERM);

}

}

int main(int argc,char *argv[]) {

signal(SIGTERM,signalhandler);

int server_sock_fd,client_sock_fd;

struct sockaddr_in server_addr;

char readbuffer[256]="",writebuffer[256]="";

if(argc<2)

{

printf("please run as ./TCPServer <port-no> \n");

exit(1);

}

server_sock_fd=socket(AF_INET,SOCK_STREAM,0);

perror("Create socket");

if(errno!=0)

exit(errno);

server_addr.sin_family=AF_INET;

server_addr.sin_addr.s_addr=htonl(INADDR_ANY);

server_addr.sin_port=htons(atoi(argv[1]));

bind(server_sock_fd,(struct sockaddr *)&server_addr,sizeof(server_addr));

perror("Bind");

if(errno!=0)

exit(errno);

listen(server_sock_fd,1);

perror("Listen");

if(errno!=0)

exit(errno);

while(1)

{

int i,j,k,array[20];

char temp[256];

i=0;j=0;k=0;

strcpy(temp," ");

client_sock_fd=accept(server_sock_fd,(struct sockaddr *)NULL,(socklen_t *)NULL);

perror("Accept");

read(client_sock_fd,readbuffer,sizeof(readbuffer));

perror("Get Data");

if(strcmp(readbuffer," stop"))

break;

strcpy(writebuffer," ");

for(i=0;i<=strlen(readbuffer);i++)

{

if(readbuffer!=':'&&i!=strlen(readbuffer))

{

if((readbuffer-'0'<=9))

temp[j++]=readbuffer;

}

else

{

array[k++]=atoi(temp);

j=0;

strcpy(temp," ");

}

}

int ntemp;

for(i=0;i<k;i++)

{

for(j=0;j<k-i-1;j++)

{

if(array[j]>array[j+1])

{

ntemp=array[j];

array[j]=array[j+1];

array[j+1]=ntemp;

}

}

}

for(i=0;i<k;i++)

{

strcpy(temp," ");

sprintf(temp,"%d ",array);

strcat(writebuffer,temp);

}

write(client_sock_fd,writebuffer,sizeof(writebuffer));

perror("Send Data");

close(client_sock_fd);

perror("Close connection");

strcpy(readbuffer," ");

}

close(server_sock_fd);

perror("Server Termination");

return errno;

}

/*

============================================================================

Name : TCPClient.c

Author : www.facebook.com/unix4u

Version :

Copyright : LGPL

Description : TCP CLIENT in C, Ansi-style

============================================================================

*/

#include <stdio.h>

#include <stdlib.h>

#include <errno.h>

#include <arpa/inet.h>

#include <sys/socket.h>

#include <unistd.h>

#include <netinet/in.h>

#include <string.h>

#include <signal.h>

void signalhandler(int signum)

{

if(SIGALRM==signum)

{

printf("Host timed Out\n");

exit(ETIMEDOUT);

}

if(SIGTERM==signum)

{

printf("See you later bye\n");

exit(SIGTERM);

}

}

int main(int argc,char *argv[]) {

signal(SIGALRM,signalhandler);

signal(SIGTERM,signalhandler);

int socket_fd;

char writebuffer[256]="",readbuffer[256]="";

struct sockaddr_in server_addr;

int i;

if(argc<4)

{

printf("please run as ./TCPClient <ip-address> <port-no> <numbers>/stop \n");

exit(1);

}

if(argc>3)

{

strcat(writebuffer,argv[3]);

for(i=4;i<argc;i++)

{

strcat(writebuffer,":");

strcat(writebuffer,argv);

}

}

socket_fd=socket(AF_INET,SOCK_STREAM,0);

perror("Create socket");

if(errno)

exit(errno);

server_addr.sin_family=AF_INET;

server_addr.sin_port=htons(atoi(argv[2]));

inet_pton(AF_INET,argv[1],&server_addr.sin_addr.s_addr);

perror("Ip address convertion");

if(errno)

exit(errno);

alarm(5);

connect(socket_fd,(struct sockaddr *)&server_addr,sizeof(server_addr));

perror("Connection");

if(errno)

exit(errno);

write(socket_fd,writebuffer,sizeof(writebuffer));

perror("Send Data");

if(errno)

exit(errno);

read(socket_fd,&readbuffer,sizeof(readbuffer));

perror("Get Data");

if(errno)

exit(errno);

puts(readbuffer);

close(socket_fd);

perror("Connection close");

return errno;

}

/*

============================================================================

Name : UDPServer.c

Author : www.facebook.com/unix4u

Version :

Copyright : LGPL

Description : UDP SERVER in C, Ansi-style

============================================================================

*/

#include <stdio.h>

#include <stdlib.h>

#include <netinet/in.h>

#include <errno.h>

#include <sys/socket.h>

#include <sys/types.h>

#include <unistd.h>

#include <arpa/inet.h>

#include <string.h>

#include <signal.h>

void signalhandler(int signum)

{

if(SIGTERM==signum)

{

printf("See you later bye\n");

exit(SIGTERM);

}

}

int main(int argc,char *argv[])

{

signal(SIGTERM,signalhandler);

struct sockaddr_in server_addr,client_addr;

char readbuffer[256]="",writebuffer[256]="";

int server_sock_fd;

socklen_t len=sizeof(client_addr);

if(argc!=2)

{

printf("please run as ./UDPServer <port-no>\n");

exit(1);

}

server_sock_fd=socket(AF_INET,SOCK_DGRAM,0);

perror("Create socket");

if(errno)

exit(errno);

server_addr.sin_family=AF_INET;

server_addr.sin_port=htons(atoi(argv[1]));

server_addr.sin_addr.s_addr=htonl(INADDR_ANY);

bind(server_sock_fd,(struct sockaddr *)&server_addr,sizeof(server_addr));

perror("Bind");

if(errno)

exit(errno);

while(1)

{

int i,j,k,array[20];

char temp[256];

i=0;j=0;k=0;

recvfrom(server_sock_fd,readbuffer,sizeof(readbuffer),0,(struct sockaddr*)&client_addr,&len);

perror("Get Data");

if(strcmp(readbuffer," stop"))

break;

strcpy(writebuffer," ");

for(i=0;i<=strlen(readbuffer);i++)

{

if(readbuffer!=':'&&i!=strlen(readbuffer))

{

if((readbuffer-'0'<=9))

temp[j++]=readbuffer;

}

else

{

array[k++]=atoi(temp);

j=0;

strcpy(temp," ");

}

}

int ntemp;

for(i=0;i<k;i++)

{

for(j=0;j<k-i-1;j++)

{

if(array[j]>array[j+1])

{

ntemp=array[j];

array[j]=array[j+1];

array[j+1]=ntemp;

}

}

}

for(i=0;i<k;i++)

{

strcpy(temp," ");

sprintf(temp,"%d ",array);

strcat(writebuffer,temp);

}

sendto(server_sock_fd,writebuffer,sizeof(writebuffer),0,(struct sockaddr*)&client_addr,len);

perror("Send Data");

}

close(server_sock_fd);

perror("Server Termination");

return errno;

}

/*

============================================================================

Name : UDPClient.c

Author : www.facebook.com/unix4u

Version :

Copyright : LGPL

Description : UDP Client in C, Ansi-style

============================================================================

*/

#include <stdio.h>

#include <stdlib.h>

#include <netinet/in.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <errno.h>

#include <unistd.h>

#include <string.h>

#include <arpa/inet.h>

#include <signal.h>

void signalhandler(int signum)

{

printf("Host Timed out\n");

exit(ETIMEDOUT);

}

int main(int argc,char *argv[]) {

signal(SIGALRM,signalhandler);

struct sockaddr_in server_addr;

socklen_t len=sizeof(server_addr);

char readbuffer[256]="",writebuffer[256]="";

int server_sock_fd,i;

if(argc<4)

{

printf("please run as ./TCPClient <ip-address> <port-no> <numbers>/stop\n");

exit(1);

}

if(argc>3)

{

strcat(writebuffer,argv[3]);

for(i=4;i<argc;i++)

{

strcat(writebuffer,":");

strcat(writebuffer,argv);

}

}

server_sock_fd=socket(AF_INET,SOCK_DGRAM,0);

perror("Create socket");

if(errno)

exit(errno);

server_addr.sin_family=AF_INET;

server_addr.sin_port=htons(atoi(argv[2]));

inet_pton(AF_INET,argv[1],&server_addr.sin_addr.s_addr);

perror("Ip address convertion");

if(errno)

exit(errno);

sendto(server_sock_fd,writebuffer,sizeof(writebuffer),0,(struct sockaddr *)&server_addr,len);

perror("Send Data");

alarm(5);

recvfrom(server_sock_fd,readbuffer,sizeof(readbuffer),0,(struct sockaddr *)&server_addr,&len);

perror("Get Data");

puts(readbuffer);

close(server_sock_fd);

perror("Close connection");

return errno;

}

Sursa: [C] TCPUDP in C - Pastebin.com

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...