├── 01-Chat-TCP ├── README.md ├── clientChat_TCP.c └── serverChat_TCP.c ├── 02-Chat-UDP ├── README.md ├── clientChat_UDP.c └── serverChat_UDP.c ├── 03-Age-UDP ├── README.md ├── clientUDP_age.c └── serverUDP_age.c ├── 04-Authentication-TCP ├── README.md ├── clientAuthentication_TCP.c └── serverAuthentication_TCP.c ├── 05-IP address-TCP ├── README.md ├── clientIP_TCP.c └── serverIP_TCP.c ├── 06-MAC Address-TCP ├── README.md ├── clientMAC_TCP.c └── serverMAC_TCP.c ├── 07-Dictionary-TCP ├── README.md ├── Screenshot │ └── 1.png ├── clientDict_TCP.c └── serverDict_TCP.c ├── 08-File Handling-TCP ├── README.md ├── Screenshot │ └── 1.png ├── clientFile_TCP.c └── serverFile_TCP.c ├── 09-Date and Time-UDP ├── README.md ├── clientDateTime_UDP.c └── serverDateTime_UDP.c ├── 10-Parity Check-TCP ├── README.md ├── clientParityCheck_TCP.c └── serverParityCheck_TCP.c ├── 11-CRC-TCP ├── README.md ├── Screenshot │ └── 1.png ├── clientCRC.c └── serverCRC.c ├── 12-File Transfer-TCP ├── README.md ├── Screenshots │ ├── 1.png │ └── 2.png ├── clientFileTransfer_TCP.c ├── read.txt └── serverFileTransfer_TCP.c ├── 13-Basics of UDP ├── README.md ├── clientUDP.c └── serverUDP.c ├── 14-Basics of TCP ├── README.md ├── clientTCP.c └── serverTCP.c └── README.md /01-Chat-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client chatting program that accepts a client connection and interacts with the client till it says "bye". 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverChat_TCP.c -o ser 11 | Client : gcc clientChat_TCP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /01-Chat-TCP/clientChat_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | # define port 5000 4 | void chat(int clisocket) 5 | { 6 | char buffer[100]; 7 | while(1) 8 | { 9 | printf("\nTo server:"); 10 | fgets(buffer,sizeof(buffer),stdin); 11 | send(clisocket,buffer,sizeof(buffer),0); 12 | recv(clisocket,buffer,sizeof(buffer),0); 13 | printf("\tFrom server:%s",buffer); 14 | if(strcmp(buffer,"bye\n")==0) 15 | break; 16 | } 17 | } 18 | 19 | void main() 20 | { 21 | int clisocket; 22 | struct sockaddr_in serveraddr; 23 | clisocket=socket(PF_INET,SOCK_STREAM,0); 24 | if(clisocket>0) 25 | printf("client socket created\n"); 26 | serveraddr.sin_family= PF_INET; 27 | serveraddr.sin_port= htons(port); 28 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 29 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 30 | chat(clisocket); 31 | close(clisocket); 32 | } 33 | -------------------------------------------------------------------------------- /01-Chat-TCP/serverChat_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | # define port 5000 4 | void chat(int newsocket) 5 | { 6 | char buffer[100]; 7 | while(1) 8 | { 9 | recv(newsocket,buffer,sizeof(buffer),0); 10 | printf("\nFrom client:%s",buffer); 11 | if(strcmp(buffer,"bye\n")==0) 12 | break; 13 | printf("\tTo client:"); 14 | fgets(buffer,sizeof(buffer),stdin); 15 | send(newsocket,buffer,sizeof(buffer),0); 16 | } 17 | } 18 | void main() 19 | { 20 | struct sockaddr_in serveraddr,newaddr; 21 | int sersocket,newsocket,s,size; 22 | sersocket=socket(PF_INET,SOCK_STREAM,0); 23 | if(sersocket>0) 24 | printf("\nserver socket is created"); 25 | serveraddr.sin_family= PF_INET; 26 | serveraddr.sin_port= htons(port); 27 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 28 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 29 | if(s==0) 30 | printf("\nbind success"); 31 | listen(sersocket,1); 32 | size=sizeof(newaddr); 33 | printf("\nserver ready"); 34 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 35 | if(newsocket>0) 36 | printf("\naccepted\n"); 37 | chat(newsocket); 38 | close(newsocket); 39 | } 40 | -------------------------------------------------------------------------------- /02-Chat-UDP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple UDP Server-Client chatting program that interacts with the client till it says "bye". 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverChat_UDP.c -o ser 11 | Client : gcc clientChat_UDP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /02-Chat-UDP/clientChat_UDP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 4000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr; 7 | int clisocket,size; 8 | char buffer[100]; 9 | clisocket=socket(AF_INET,SOCK_DGRAM,0); 10 | if(clisocket>0) 11 | printf("\nClient socket created"); 12 | serveraddr.sin_family=AF_INET; 13 | serveraddr.sin_port=htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | while(1) 16 | { 17 | printf("\nTo server:"); 18 | fgets(buffer,sizeof(buffer),stdin); 19 | sendto(clisocket,buffer,sizeof(buffer),0,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 20 | if(strcmp(buffer,"bye\n")==0) 21 | break; 22 | size=sizeof(serveraddr); 23 | recvfrom(clisocket,buffer,sizeof(buffer),0,(struct sockaddr*)&serveraddr,&size); 24 | printf("\tFrom server:%s",buffer); 25 | } 26 | close(clisocket); 27 | } 28 | 29 | -------------------------------------------------------------------------------- /02-Chat-UDP/serverChat_UDP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 4000 4 | void main() 5 | { 6 | 7 | struct sockaddr_in serveraddr,newaddr; 8 | int sersocket,size,s; 9 | char buffer[100]; 10 | sersocket=socket(AF_INET,SOCK_DGRAM,0); 11 | if(sersocket>0) 12 | printf("\nServer socket created"); 13 | serveraddr.sin_family=AF_INET; 14 | serveraddr.sin_port=htons(port); 15 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 16 | s=bind(sersocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 17 | if(s==0) 18 | printf("\nBind success"); 19 | size=sizeof(newaddr); 20 | while(1) 21 | { 22 | recvfrom(sersocket,buffer,sizeof(buffer),0,(struct sockaddr*)&newaddr,&size); 23 | printf("\nFrom client:%s",buffer); 24 | if(strcmp(buffer,"bye\n")==0) 25 | break; 26 | else 27 | printf("\tTo client:"); 28 | fgets(buffer,sizeof(buffer),stdin); 29 | sendto(sersocket,buffer,sizeof(buffer),0,(struct sockaddr*)&newaddr,sizeof(newaddr)); 30 | } 31 | close(sersocket); 32 | } 33 | 34 | -------------------------------------------------------------------------------- /03-Age-UDP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple UDP Server-Client program that calculates the age in terms of years, months and days, given a date of birth. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverUDP_age.c -o ser 11 | Client : gcc clientUDP_age.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /03-Age-UDP/clientUDP_age.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 4000 4 | int main() 5 | { 6 | int dd,mm,yy; 7 | struct sockaddr_in serveraddr,; 8 | int clisocket; 9 | clisocket=socket(AF_INET,SOCK_DGRAM,0); 10 | if(clisocket>0) 11 | printf("\nClient socket created"); 12 | serveraddr.sin_family=AF_INET; 13 | serveraddr.sin_port=htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | printf("\nEnter date (dd/mm/yyyy) format:"); 16 | scanf("%d/%d/%d",&dd,&mm,&yy); 17 | sendto(clisocket,&dd,sizeof(dd),0,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 18 | sendto(clisocket,&mm,sizeof(mm),0,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 19 | sendto(clisocket,&yy,sizeof(yy),0,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 20 | close(clisocket); 21 | } 22 | 23 | 24 | -------------------------------------------------------------------------------- /03-Age-UDP/serverUDP_age.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 4000 4 | void findAge(int current_date, int current_month,int current_year,int birth_date,int birth_month, int birth_year) 5 | { 6 | int month[] = { 31, 28, 31, 30, 31, 30, 31,31, 30, 31, 30, 31 }; 7 | if (birth_date > current_date) { 8 | current_date = current_date + month[birth_month - 1]; 9 | current_month = current_month - 1; 10 | } 11 | if (birth_month > current_month) { 12 | current_year = current_year - 1; 13 | current_month = current_month + 12; 14 | } 15 | int calculated_date = current_date - birth_date; 16 | int calculated_month = current_month - birth_month; 17 | int calculated_year = current_year - birth_year; 18 | printf("Present Age\nYears: %d Months: %d Days: %d\n",calculated_year,calculated_month,calculated_date); 19 | } 20 | int main() 21 | { 22 | time_t timer; 23 | struct tm* tm_info; 24 | int days,months,years; 25 | char day[3]; 26 | char month[3]; 27 | char year[5]; 28 | int dd,mm,yy; 29 | time(&timer); 30 | tm_info = localtime(&timer); 31 | strftime(day, 3, "%d", tm_info); 32 | strftime(month, 3, "%m", tm_info); 33 | strftime(year, 5, "%Y", tm_info); 34 | days= atoi(day); 35 | months= atoi(month); 36 | years= atoi(year); 37 | printf("%d/%d/%d\n", months, days, years); 38 | struct sockaddr_in serveraddr,newaddr; 39 | int sersocket,s,size; 40 | sersocket=socket(AF_INET,SOCK_DGRAM,0); 41 | if(sersocket>0) 42 | printf("\nServer socket created"); 43 | serveraddr.sin_family=AF_INET; 44 | serveraddr.sin_port=htons(port); 45 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 46 | s=bind(sersocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 47 | if(s==0) 48 | printf("\nBind success"); 49 | size=sizeof(newaddr); 50 | recvfrom(sersocket,&dd,1024,0,(struct sockaddr*)&newaddr,&size); 51 | recvfrom(sersocket,&mm,1024,0,(struct sockaddr*)&newaddr,&size); 52 | recvfrom(sersocket,&yy,1024,0,(struct sockaddr*)&newaddr,&size); 53 | printf("\nString recieved:%d/%d/%d\n",dd,mm,yy); 54 | findAge(days,months,years,dd,mm,yy); 55 | close(sersocket); 56 | } 57 | 58 | 59 | -------------------------------------------------------------------------------- /04-Authentication-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program where the client provides the username and password as request and the server authenticates the request and returns the result. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverAuthentication_TCP.c -o ser 11 | Client : gcc clientAuthentication_TCP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /04-Authentication-TCP/clientAuthentication_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | # define port 5000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr; 7 | int clisocket; 8 | char buffer[100]; 9 | clisocket=socket(PF_INET,SOCK_STREAM,0); 10 | if(clisocket>0) 11 | printf("\nclient socket created"); 12 | serveraddr.sin_family= PF_INET; 13 | serveraddr.sin_port= htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 16 | printf("\nUSERNAME:"); 17 | scanf("%s",buffer); 18 | send(clisocket,buffer,sizeof(buffer),0); 19 | printf("PASSWORD:"); 20 | scanf("%s",buffer); 21 | send(clisocket,buffer,sizeof(buffer),0); 22 | recv(clisocket,buffer,sizeof(buffer),0); 23 | printf("%s",buffer); 24 | close(clisocket); 25 | } 26 | -------------------------------------------------------------------------------- /04-Authentication-TCP/serverAuthentication_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | # define port 5000 5 | void main() 6 | { 7 | struct sockaddr_in serveraddr,newaddr; 8 | int sersocket,newsocket,s,size; 9 | char buffer1[100],buffer2[100],buffer[100]; 10 | sersocket=socket(PF_INET,SOCK_STREAM,0); 11 | if(sersocket>0) 12 | printf("\nserver socket is created"); 13 | serveraddr.sin_family= PF_INET; 14 | serveraddr.sin_port= htons(port); 15 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 16 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 17 | if(s==0) 18 | printf("\nbind success"); 19 | listen(sersocket,1); 20 | size=sizeof(newaddr); 21 | printf("\nserver ready"); 22 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 23 | if(newsocket>0) 24 | printf("\naccepted"); 25 | recv(newsocket,buffer1,1024,0); 26 | printf("\ndata received is %s\n",buffer1); 27 | if(strcmp(buffer1,"admin")==0) 28 | { 29 | recv(newsocket,buffer2,1024,0); 30 | printf("data received is %s\n",buffer2); 31 | if(strcmp(buffer2,"admin")==0) 32 | strcpy(buffer,"\nCONFIRMED\n"); 33 | else 34 | strcpy(buffer,"\nEnter valid password\n"); 35 | send(newsocket,buffer,sizeof(buffer),0); 36 | } 37 | else 38 | strcpy(buffer,"\nEnter valid username\n"); 39 | send(newsocket,buffer,sizeof(buffer),0); 40 | close(sersocket); 41 | } 42 | -------------------------------------------------------------------------------- /05-IP address-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program that gets the IP address of the client connected. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverIP_TCP.c 11 | Client : gcc clientIP_TCP.c 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./a.out 18 | Client : ./a.out 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /05-IP address-TCP/clientIP_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | # define port 5000 9 | void main() 10 | { 11 | struct sockaddr_in serveraddr; 12 | int sersocket,clisocket; 13 | char IPaddr[100]; 14 | clisocket=socket(PF_INET,SOCK_STREAM,0); 15 | if(clisocket>0) 16 | printf("\nclient socket created"); 17 | serveraddr.sin_family= PF_INET; 18 | serveraddr.sin_port= htons(port); 19 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 20 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 21 | strcpy(IPaddr,inet_ntoa(serveraddr.sin_addr)); 22 | send(clisocket,IPaddr,sizeof(IPaddr),0); 23 | printf("\nIP address of client sent to server\n"); 24 | close(clisocket); 25 | } 26 | -------------------------------------------------------------------------------- /05-IP address-TCP/serverIP_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | # define port 5000 9 | void main() 10 | { 11 | struct sockaddr_in serveraddr,newaddr; 12 | int sersocket,newsocket,s,size; 13 | char buffer[100]; 14 | sersocket=socket(PF_INET,SOCK_STREAM,0); 15 | if(sersocket>0) 16 | printf("\nserver socket is created"); 17 | serveraddr.sin_family= PF_INET; 18 | serveraddr.sin_port= htons(port); 19 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 20 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 21 | if(s==0) 22 | printf("\nbind success"); 23 | listen(sersocket,1); 24 | size=sizeof(newaddr); 25 | printf("\nserver ready"); 26 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 27 | if(newsocket>0) 28 | printf("\naccepted"); 29 | recv(newsocket,buffer,1024,0); 30 | printf("\nIP address : %s\n",buffer); 31 | close(sersocket); 32 | } 33 | -------------------------------------------------------------------------------- /06-MAC Address-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program that gets the MAC address and IP address of the client connected. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverMAC_TCP.c -o ser 11 | Client : gcc clientMAC_TCP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /06-MAC Address-TCP/clientMAC_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | # define port 5000 10 | void main() 11 | { 12 | struct sockaddr_in serveraddr; 13 | struct ifreq ifr; 14 | char *iface = "eth0"; 15 | char *mac; 16 | int sersocket,clisocket; 17 | char IPaddr[100],mac_addr[32]={0}; 18 | clisocket=socket(PF_INET,SOCK_STREAM,0); 19 | if(clisocket>0) 20 | printf("\nclient socket created"); 21 | serveraddr.sin_family= PF_INET; 22 | serveraddr.sin_port= htons(port); 23 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 24 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 25 | strcpy(IPaddr,inet_ntoa(serveraddr.sin_addr)); 26 | send(clisocket,IPaddr,sizeof(IPaddr),0); 27 | printf("\nIP address of client sent to server"); 28 | ifr.ifr_addr.sa_family = PF_INET; 29 | strncpy((char *)ifr.ifr_name , (const char *)iface , IFNAMSIZ-1); 30 | ioctl(clisocket, SIOCGIFHWADDR, &ifr); 31 | mac = (char *)ifr.ifr_hwaddr.sa_data; 32 | sprintf((char *)mac_addr,(const char *)"%.2hhx:%.2hhx:%.2hhx:%.2hhx:%.2hhx:%.2hhx\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); 33 | send(clisocket,mac_addr,sizeof(mac_addr),0); 34 | printf("\nMAC address of client sent to server\n"); 35 | close(clisocket); 36 | } 37 | 38 | -------------------------------------------------------------------------------- /06-MAC Address-TCP/serverMAC_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | # define port 5000 9 | void main() 10 | { 11 | struct sockaddr_in serveraddr,newaddr; 12 | int sersocket,newsocket,s,size; 13 | char buffer[100]; 14 | sersocket=socket(PF_INET,SOCK_STREAM,0); 15 | if(sersocket>0) 16 | printf("\nserver socket is created"); 17 | serveraddr.sin_family= PF_INET; 18 | serveraddr.sin_port= htons(port); 19 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 20 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 21 | if(s==0) 22 | printf("\nbind success"); 23 | listen(sersocket,1); 24 | size=sizeof(newaddr); 25 | printf("\nserver ready"); 26 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 27 | if(newsocket>0) 28 | printf("\naccepted"); 29 | recv(newsocket,buffer,1024,0); 30 | printf("\nIP address : %s",buffer); 31 | recv(newsocket,buffer,1024,0); 32 | printf("\nMAC address : %s\n",buffer); 33 | close(sersocket); 34 | } 35 | -------------------------------------------------------------------------------- /07-Dictionary-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program implementing a dictionary with meanings and antonyms. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverDict_TCP.c 11 | Client : gcc clientDict_TCP.c 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./a.out 18 | Client : ./a.out 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /07-Dictionary-TCP/Screenshot/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shruthi64/Socket-Programming-in-C/c262bb4b27d0acf010c061de3c32552d23310d29/07-Dictionary-TCP/Screenshot/1.png -------------------------------------------------------------------------------- /07-Dictionary-TCP/clientDict_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | # define port 5000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr; 7 | int clisocket; 8 | char buffer[100]; 9 | clisocket=socket(PF_INET,SOCK_STREAM,0); 10 | if(clisocket>0) 11 | printf("\nclient socket created"); 12 | serveraddr.sin_family= PF_INET; 13 | serveraddr.sin_port= htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 16 | printf("\nEnter word to be searched in dictionary : "); 17 | scanf("%s",buffer); 18 | send(clisocket,buffer,sizeof(buffer),0); 19 | recv(clisocket,buffer,sizeof(buffer),0); 20 | printf("Meaning - %s\n",buffer); 21 | recv(clisocket,buffer,sizeof(buffer),0); 22 | printf("Antonym - %s\n",buffer); 23 | close(clisocket); 24 | } 25 | -------------------------------------------------------------------------------- /07-Dictionary-TCP/serverDict_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | # define port 5000 5 | void main() 6 | { 7 | struct sockaddr_in serveraddr,newaddr; 8 | int sersocket,newsocket,s,size; 9 | int i,c=0; 10 | char buffer[100],word[100],antonym[100]; 11 | char dictionary[7][3][100]={"consider", "deem to be","disregard","minute" , "infinitely or immeasurably small","significant","accord" , "concurrence of opinion","withhold","commit" ,"perform an act,usually with a negative connotation","abstain","utter", "without qualification","partial","zealot", "a fervent and even militant proponent of something","moderate","wanton","a lewd or lascivious person","justifiable"}; 12 | sersocket=socket(PF_INET,SOCK_STREAM,0); 13 | if(sersocket>0) 14 | printf("\nserver socket is created"); 15 | serveraddr.sin_family= PF_INET; 16 | serveraddr.sin_port= htons(port); 17 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 18 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 19 | if(s==0) 20 | printf("\nbind success"); 21 | listen(sersocket,1); 22 | size=sizeof(newaddr); 23 | printf("\nserver ready"); 24 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 25 | if(newsocket>0) 26 | printf("\naccepted"); 27 | recv(newsocket,buffer,1024,0); 28 | printf("\nWord to be searched : %s\n",buffer); 29 | for(i=0;i<7;i++) 30 | { 31 | if(strcmp(buffer,dictionary[i][0])==0) 32 | { 33 | strcpy(word,dictionary[i][1]); 34 | send(newsocket,word,sizeof(word),0); 35 | strcpy(antonym,dictionary[i][2]); 36 | send(newsocket,antonym,sizeof(antonym),0); 37 | } 38 | else 39 | c++; 40 | } 41 | if(c==7){ 42 | strcpy(word,"Word not found in dictionary"); 43 | send(newsocket,word,sizeof(word),0); 44 | } 45 | close(sersocket); 46 | } 47 | -------------------------------------------------------------------------------- /08-File Handling-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program implementing file handling. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverFile_TCP.c -o ser 11 | Client : gcc clientFile_TCP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /08-File Handling-TCP/Screenshot/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shruthi64/Socket-Programming-in-C/c262bb4b27d0acf010c061de3c32552d23310d29/08-File Handling-TCP/Screenshot/1.png -------------------------------------------------------------------------------- /08-File Handling-TCP/clientFile_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | # define port 5000 5 | void main() 6 | { 7 | struct sockaddr_in serveraddr; 8 | int clisocket; 9 | char buffer[100]; 10 | clisocket=socket(PF_INET,SOCK_STREAM,0); 11 | if(clisocket>0) 12 | printf("client socket created"); 13 | serveraddr.sin_family= PF_INET; 14 | serveraddr.sin_port= htons(port); 15 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 16 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 17 | printf("\nEnter data"); 18 | fgets(buffer,100,stdin); /*stdin = 0 , for standard input */ 19 | write(clisocket,buffer,strlen(buffer)+1); 20 | close(clisocket); 21 | } 22 | -------------------------------------------------------------------------------- /08-File Handling-TCP/serverFile_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | # define port 5000 6 | void main() 7 | { 8 | struct sockaddr_in serveraddr,newaddr; 9 | int sersocket,newsocket,s,size; 10 | char buffer[100]; 11 | sersocket=socket(PF_INET,SOCK_STREAM,0); 12 | if(sersocket>0) 13 | printf("server socket is created"); 14 | serveraddr.sin_family= PF_INET; 15 | serveraddr.sin_port= htons(port); 16 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 17 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 18 | if(s==0) 19 | printf("\nbind success"); 20 | listen(sersocket,1); 21 | size=sizeof(newaddr); 22 | printf("\nserver ready"); 23 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 24 | if(newsocket>0) 25 | printf("\naccepted"); 26 | FILE *fp; 27 | fp=fopen("p.txt","w"); 28 | if(fp==NULL) 29 | { 30 | printf("\nFile cannot be opened"); 31 | exit(0); 32 | } 33 | else 34 | { 35 | printf("\nFile opened successfully"); 36 | read(newsocket,buffer,100); 37 | printf("\nData to be written on file-%s\n",buffer); 38 | fprintf(fp,"%s\n",buffer); 39 | write(newsocket, buffer, strlen(buffer)+1); 40 | fclose(fp); 41 | } 42 | close(sersocket); 43 | } 44 | -------------------------------------------------------------------------------- /09-Date and Time-UDP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple UDP Server-Client program which displays the current calendar time. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverDateTime_UDP.c -o ser 11 | Client : gcc clientDateTime_UDP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /09-Date and Time-UDP/clientDateTime_UDP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 4000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr,newaddr; 7 | int clisocket,size; 8 | char buffer[100]; 9 | clisocket=socket(AF_INET,SOCK_DGRAM,0); 10 | if(clisocket>0) 11 | printf("\nClient socket created"); 12 | serveraddr.sin_family=AF_INET; 13 | serveraddr.sin_port=htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | printf("\nEnter message: "); 16 | scanf("%s",buffer); 17 | size=sizeof(newaddr); 18 | sendto(clisocket,buffer,sizeof(buffer),0,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 19 | recvfrom(clisocket,buffer,sizeof(buffer),0,(struct sockaddr*)&newaddr,&size); 20 | printf("\nMessage from server:%s\n",buffer); 21 | close(clisocket); 22 | } 23 | 24 | -------------------------------------------------------------------------------- /09-Date and Time-UDP/serverDateTime_UDP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #define port 4000 6 | void main(){ 7 | time_t ticks; 8 | struct sockaddr_in serveraddr,newaddr; 9 | int sersocket,s,size; 10 | char buffer[100],str[100]; 11 | sersocket=socket(AF_INET,SOCK_DGRAM,0); 12 | if(sersocket>0) 13 | printf("\nServer socket created"); 14 | serveraddr.sin_family=AF_INET; 15 | serveraddr.sin_port=htons(port); 16 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 17 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 18 | if(s==0) 19 | printf("\nBind success"); 20 | size=sizeof(newaddr); 21 | recvfrom(sersocket,buffer,sizeof(buffer),0,(struct sockaddr *)&newaddr,&size); 22 | printf("\nMessage recieved: %s",buffer); 23 | ticks=time(NULL); 24 | strcpy(str,ctime(&ticks)); 25 | snprintf(buffer,sizeof(buffer),"%s",str); 26 | sendto(sersocket,buffer,sizeof(buffer),0,(struct sockaddr *)&newaddr,sizeof(newaddr)); 27 | printf("\n"); 28 | close(sersocket); 29 | } 30 | -------------------------------------------------------------------------------- /10-Parity Check-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program to check if the data (in binary) is of even parity. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverParityCheck_TCP.c -o ser 11 | Client : gcc clientParityCheck_TCP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /10-Parity Check-TCP/clientParityCheck_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | # define port 5000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr; 7 | int clisocket; 8 | char buffer[100]; 9 | clisocket=socket(PF_INET,SOCK_STREAM,0); 10 | if(clisocket>0) 11 | printf("client socket created"); 12 | serveraddr.sin_family= PF_INET; 13 | serveraddr.sin_port= htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 16 | printf("\nDATA:"); 17 | scanf("%s",buffer); 18 | send(clisocket,buffer,sizeof(buffer),0); 19 | recv(clisocket,buffer,sizeof(buffer),0); 20 | printf("%s\n",buffer); 21 | close(clisocket); 22 | } 23 | -------------------------------------------------------------------------------- /10-Parity Check-TCP/serverParityCheck_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | # define port 5000 5 | int parityCheck(char buffer[]) 6 | { 7 | int i,count=0; 8 | for(i=0;i0) 23 | printf("\nserver socket is created"); 24 | serveraddr.sin_family= PF_INET; 25 | serveraddr.sin_port= htons(port); 26 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 27 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 28 | if(s==0) 29 | printf("\nbind success"); 30 | listen(sersocket,1); 31 | size=sizeof(newaddr); 32 | printf("\nserver ready"); 33 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 34 | if(newsocket>0) 35 | printf("\naccepted"); 36 | recv(newsocket,buffer,1024,0); 37 | int parity=parityCheck(buffer); 38 | if(parity=='0') 39 | strcpy(buffer,"\nNo error in data\n"); 40 | else 41 | strcpy(buffer,"\nError in data\n"); 42 | send(newsocket,buffer,sizeof(buffer),0); 43 | close(sersocket); 44 | } 45 | -------------------------------------------------------------------------------- /11-CRC-TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program performing a Cyclic Redundancy Check (CRC). 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverCRC.c -o ser 11 | Client : gcc clientCRC.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /11-CRC-TCP/Screenshot/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shruthi64/Socket-Programming-in-C/c262bb4b27d0acf010c061de3c32552d23310d29/11-CRC-TCP/Screenshot/1.png -------------------------------------------------------------------------------- /11-CRC-TCP/clientCRC.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | # define port 5000 6 | int* getCRC(char dividend[],char divisor[],int dataSize, int divisorSize){ 7 | int n1 = dataSize, n2 = divisorSize; 8 | int i,j,n[50],div[50],temp,q[20]; 9 | int *f=(int*)malloc(sizeof(int)*20); 10 | for(i=0;i0) 51 | printf("\nclient socket created"); 52 | serveraddr.sin_family= PF_INET; 53 | serveraddr.sin_port= htons(port); 54 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 55 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 56 | printf("\nData: "); 57 | scanf("%s",buffer); 58 | int dataSize = strlen(buffer); 59 | int i; 60 | for(i=dataSize;i 2 | #include 3 | #include 4 | #include 5 | # define port 5000 6 | int* getCRC(char dividend[],char divisor[],int dataSize, int divisorSize){ 7 | int n1 = dataSize, n2 = divisorSize; 8 | int i,j,n[50],div[50],temp,q[20]; 9 | int *f=(int*)malloc(sizeof(int)*20); 10 | for(i=0;i0) 53 | printf("\nserver socket is created"); 54 | serveraddr.sin_family= PF_INET; 55 | serveraddr.sin_port= htons(port); 56 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 57 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 58 | if(s==0) 59 | printf("\nbind success"); 60 | listen(sersocket,1); 61 | size=sizeof(newaddr); 62 | printf("\nserver ready"); 63 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 64 | if(newsocket>0) 65 | printf("\naccepted"); 66 | char divisor[4] = "1101"; 67 | recv(newsocket,buffer,1024,0); 68 | int *remainder; 69 | int dataSize = strlen(buffer) - strlen(divisor) + 1, divisorSize = strlen(divisor); 70 | remainder = getCRC(buffer,divisor,dataSize,divisorSize); 71 | int i; 72 | for(i=1;i 2 | #include 3 | #include 4 | # define port 5000 5 | void main() 6 | { 7 | struct sockaddr_in serveraddr; 8 | int clisocket; 9 | char buffer[100]; 10 | clisocket=socket(PF_INET,SOCK_STREAM,0); 11 | if(clisocket>0) 12 | printf("client socket created"); 13 | serveraddr.sin_family= PF_INET; 14 | serveraddr.sin_port= htons(port); 15 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 16 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 17 | FILE *f; 18 | int words = 0; 19 | char c; 20 | f=fopen("read.txt","r"); 21 | while((c=getc(f))!=EOF) //Counting No of words in the file 22 | { 23 | fscanf(f,"%s",buffer); 24 | if(isspace(c)||c=='\t'||c==('.')) 25 | words++; 26 | } 27 | printf("\nWords = %d \n",words); 28 | write(clisocket,&words, sizeof(int)); 29 | rewind(f);//sets to beginning of file 30 | char ch; 31 | while(ch!=EOF) 32 | { 33 | fscanf(f,"%s",buffer); 34 | write(clisocket,buffer,100); 35 | ch=fgetc(f); 36 | } 37 | printf("\nThe file was sent successfully\n"); 38 | close(clisocket); 39 | } 40 | 41 | 42 | -------------------------------------------------------------------------------- /12-File Transfer-TCP/read.txt: -------------------------------------------------------------------------------- 1 | Hello. I'm Shruthi. 2 | -------------------------------------------------------------------------------- /12-File Transfer-TCP/serverFileTransfer_TCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | # define port 5000 6 | void main() 7 | { 8 | struct sockaddr_in serveraddr,newaddr; 9 | int sersocket,newsocket,s,size; 10 | char buffer[100]; 11 | sersocket=socket(PF_INET,SOCK_STREAM,0); 12 | if(sersocket>0) 13 | printf("server socket is created"); 14 | serveraddr.sin_family= PF_INET; 15 | serveraddr.sin_port= htons(port); 16 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 17 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 18 | if(s==0) 19 | printf("\nbind success"); 20 | listen(sersocket,1); 21 | size=sizeof(newaddr); 22 | printf("\nserver ready"); 23 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 24 | if(newsocket>0) 25 | printf("\naccepted"); 26 | FILE *fp; 27 | int ch=0; 28 | int words; 29 | fp=fopen("write.txt","w"); 30 | if(fp==NULL) 31 | { 32 | printf("\nFile cannot be opened"); 33 | exit(0); 34 | } 35 | else 36 | { 37 | printf("\nFile opened successfully\n"); 38 | read(newsocket,&words,sizeof(int)); 39 | while(ch!=words) 40 | { 41 | read(newsocket,buffer,100); 42 | fprintf(fp,"%s ",buffer); 43 | ch++; 44 | } 45 | printf("The new file created is write.txt\n"); 46 | fclose(fp); 47 | } 48 | close(sersocket); 49 | } 50 | 51 | 52 | -------------------------------------------------------------------------------- /13-Basics of UDP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple UDP Server-Client program exchanging a message between the server and client to demonstrate the Client-server model. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverUDP.c -o ser 11 | Client : gcc clientUDP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /13-Basics of UDP/clientUDP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 4000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr; 7 | int clisocket; 8 | char buffer[100]; 9 | clisocket=socket(AF_INET,SOCK_DGRAM,0); 10 | if(clisocket>0) 11 | printf("\nClient socket created"); 12 | serveraddr.sin_family=AF_INET; 13 | serveraddr.sin_port=htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | printf("\nEnter string:"); 16 | scanf("%s",buffer); 17 | sendto(clisocket,buffer,sizeof(buffer),0,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 18 | close(clisocket); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /13-Basics of UDP/serverUDP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 4000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr,newaddr; 7 | int sersocket,s,size; 8 | char buffer[100]; 9 | sersocket=socket(AF_INET,SOCK_DGRAM,0); 10 | if(sersocket>0) 11 | printf("\nServer socket created"); 12 | serveraddr.sin_family=AF_INET; 13 | serveraddr.sin_port=htons(port); 14 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 15 | s=bind(sersocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 16 | if(s==0) 17 | printf("\nBind success"); 18 | size=sizeof(newaddr); 19 | recvfrom(sersocket,buffer,1024,0,(struct sockaddr*)&newaddr,&size); 20 | printf("\nString recieved:%s\n",buffer); 21 | close(sersocket); 22 | } 23 | 24 | -------------------------------------------------------------------------------- /14-Basics of TCP/README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | A simple TCP Server-Client program exchanging a message between the server and client to demonstrate the Client-server model. 4 | 5 | ## Implementation 6 | 7 | Compile 8 | 9 | ``` 10 | Server : gcc serverTCP.c -o ser 11 | Client : gcc clientTCP.c -o cli 12 | ``` 13 | 14 | Run 15 | 16 | ``` 17 | Server : ./ser 18 | Client : ./cli 19 | ``` 20 | 21 | -------------------------------------------------------------------------------- /14-Basics of TCP/clientTCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 5000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr; 7 | int clisocket; 8 | char buffer[100]; 9 | clisocket=socket(PF_INET,SOCK_STREAM,0); 10 | if(clisocket>0) 11 | printf("\nclient socket created"); 12 | serveraddr.sin_family= PF_INET; 13 | serveraddr.sin_port= htons(port); 14 | serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 15 | connect(clisocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); 16 | printf("\nEnter string:"); 17 | scanf("%s",buffer); 18 | send(clisocket,buffer,sizeof(buffer),0); 19 | close(clisocket); 20 | } 21 | -------------------------------------------------------------------------------- /14-Basics of TCP/serverTCP.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define port 5000 4 | void main() 5 | { 6 | struct sockaddr_in serveraddr,newaddr; 7 | int sersocket,newsocket,s,size; 8 | char buffer[100]; 9 | sersocket=socket(PF_INET,SOCK_STREAM,0); 10 | if(sersocket>0) 11 | printf("\nserver socket is created"); 12 | serveraddr.sin_family= PF_INET; 13 | serveraddr.sin_port= htons(port); 14 | serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 15 | s=bind(sersocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); 16 | if(s==0) 17 | printf("\nbind success"); 18 | listen(sersocket,1); 19 | size=sizeof(newaddr); 20 | printf("\nserver ready"); 21 | newsocket=accept(sersocket,(struct sockaddr *)&newaddr,&size); 22 | if(newsocket>0) 23 | printf("\naccepted"); 24 | recv(newsocket,buffer,1024,0); 25 | printf("\ndata received is %s\n",buffer); 26 | close(sersocket); 27 | } 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Socket Programming in C 2 | 3 | Socket programs are used to communicate between various processes usually running on different systems, mostly used to create a client-server environment. This repository contains the basic programs coded in C. 4 | 5 | ## List of Programs 6 | 7 | 1. [Chat (TCP)](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/01-Chat-TCP) 8 | 9 | 2. [Chat (UDP)](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/02-Chat-UDP) 10 | 11 | 3. [Age](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/03-Age-UDP) 12 | 13 | 4. [Authentication](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/04-Authentication-TCP) 14 | 15 | 5. [IP address](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/05-IP%20address-TCP) 16 | 17 | 6. [MAC address](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/06-MAC%20Address-TCP) 18 | 19 | 7. [Dictionary](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/07-Dictionary-TCP) 20 | 21 | 8. [File handling](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/08-File%20Handling-TCP) 22 | 23 | 9. [Date and time](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/09-Date%20and%20Time-UDP) 24 | 25 | 10. [Parity check](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/10-Parity%20Check-TCP) 26 | 27 | 11. [CRC](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/11-CRC-TCP) 28 | 29 | 12. [File transfer](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/12-File%20Transfer-TCP) 30 | 31 | 13. [Basics of UDP](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/13-Basics%20of%20UDP) 32 | 33 | 14. [Basics of TCP](https://github.com/shruthi64/Socket-Programming-in-C/tree/main/14-Basics%20of%20TCP) 34 | 35 | --------------------------------------------------------------------------------