Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protocol UDP -> client server
- http://github.com/shfx17
- // CLIENT
- #include <stdio.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <string.h>
- #define MAXLINE 4096
- int main(int argc, char **argv)
- {
- int sockfd,n;
- char recvline[MAXLINE+1],buff[MAXLINE+1];
- struct sockaddr_in servaddr;
- if((sockfd = socket(AF_INET,SOCK_DGRAM,0))<0)
- puts("Socket error");
- bzero(&servaddr, sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- if(inet_pton(AF_INET, argv[1],&servaddr.sin_addr)<0)
- puts("Problem z formatem");
- else
- printf("Address %s\n",argv[1]);
- if((servaddr.sin_port = htons(atoi(argv[2])))<0)
- printf("Zły format PORT");
- else
- printf("Port polaczenia %d\n",servaddr.sin_port);
- while(1){
- bzero(buff,sizeof(buff));
- puts("Wyslij wiadomosc:");
- if(fgets (buff, sizeof(buff), stdin) != NULL)
- {
- if(sendto(sockfd,buff,strlen(buff), 0, (struct sockaddr *)&servaddr, sizeof(servaddr))<0)
- puts("Blad sendto");
- else
- {
- printf("Wysłano: %s\n",buff);
- }
- recvline[n]=0;
- if((recvfrom(sockfd,recvline, MAXLINE, 0, NULL, NULL))<0)
- puts("recvfrom error");
- printf("Otrzymałem: %s\n", recvline);
- if(fputs(recvline, stdout) == EOF)
- puts("Nie dziala fputs");
- if(n < 0)
- puts("Read error");
- }
- if(close(sockfd)<0){
- puts("Close sockfd");
- }
- return 0;
- }
- // SERVER
- #include <stdio.h>
- #include<stdlib.h>
- #include <errno.h>
- #include <sys/types.h>
- #include<sys/socket.h>
- #include<netinet/in.h>
- #include<string.h>
- #define MAXLINE 4096
- #define LISTENQ 1024
- int main (int argc, char **argv)
- {
- int listenfd;
- int len;
- struct sockaddr_in servaddr, cliaddr;
- char buff[MAXLINE],recvline[MAXLINE],z;
- if(argc !=2)
- puts("Serverport");
- if((listenfd = socket (AF_INET, SOCK_DGRAM, 0 ))<0)
- puts("Socket error");
- int nn= 240*1024;
- setsockopt(listenfd, SOL_SOCKET, SO_RCVBUF, &nn, sizeof(nn));
- bzero(&servaddr, sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
- if((servaddr.sin_port = htons (atoi(argv[1])))<0)
- puts("Zły port");
- if(bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))<0)
- puts("Bind error");
- while(1)
- {
- len = sizeof(cliaddr);
- if((recvfrom (listenfd, recvline, MAXLINE, 0 ,(struct sockaddr* )&cliaddr, &len))>0)
- {
- printf("Otrzymałem: %s \n",recvline);
- int i, j;
- puts("***********************");
- for(i = strlen(recvline) - 1, j = 0; i >= 0; i--, j++) {
- buff[j] = recvline[i];
- }
- printf("Wysylam odpowiedz: %s\n", buff);
- sendto(listenfd, buff, sizeof(buff), 0, (struct sockaddr *)&cliaddr, len);
- }
- }
- if(close(listenfd) == -1)
- puts("Bład zamkniecia");
- return 0;
- }
Add Comment
Please, Sign In to add comment