Skip to main content

tcp client, server chat simplified

Here is my simplified version of the tcp client, server chat application

client.c

#include "stdio.h"
#include "stdlib.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"

int main() {
    int sockfd,n;
    char buff[256];
    struct sockaddr_in servaddr;

    //create socket
    sockfd = socket(AF_INET,SOCK_STREAM,0);

    //fill serv struct
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(40402);
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");    //connect with server
    connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));

    //read and write with the server
    for(;;) {
    printf("client : ");
    n=0;
    while((buff[n++]=getchar())!='\n');
    write(sockfd,buff,sizeof(buff));
    bzero(buff,sizeof(buff)); //clearing the buffer
    read(sockfd,buff,sizeof(buff));
    printf("server : %s",buff);
    bzero(buff,sizeof(buff));
    }

    //close
    close(sockfd);
}


server.c

#include "stdio.h"
#include "stdlib.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"

int main() {
    int sockfd,connfd,n;
    char buff[256];
    struct sockaddr_in servaddr;

    //create socket
    sockfd = socket(AF_INET,SOCK_STREAM,0);

    //fill server struct
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(40402);
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    //bind
    bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));

    //listen for 1 connection
    listen(sockfd,1);
    
    //accept a client
    connfd = accept(sockfd,NULL,NULL);

    //read and write to client
    for(;;)  {
   read(connfd,buff,sizeof(buff));
   printf("client : %s",buff);
   bzero(buff,sizeof(buff));
   printf("server : ");
   n=0;
   while((buff[n++]=getchar())!='\n');
   write(connfd,buff,sizeof(buff));
   bzero(buff,sizeof(buff));
  }

    //close the sockets
    close(connfd);
    close(sockfd);
}

Comments

Popular posts from this blog

விண்டோஸை விட லினக்ஸ் சிறந்தது: பத்து காரணங்கள்

லினக்ஸ் பயன்படுத்த கடினம், விண்டோஸே சிறந்தது என கருதுபவர்களுக்காக 1. வைரஸ் அபாயம் கிடையாது: ஆம். பொரும்பாலான வைரஸ் நிரல்கள் விண்டோஸிற்காக எழுதப்படுபவை. லினக்ஸால் win32  நிரல்களை  செயல்படுத்த முடியாது. எனவே வைரஸ் வரும் என்ற கவலை வேண்டாம். 2. திற-மூலமென்பொருள் - விண்டோஸ் போல் அல்லாமல் லினக்ஸ் ஆனது திற-மூல-இயங்குதளம்(open-source).  எனவே நம்முடைய தேவைக்கு ஏற்ப நாம் இதனை மாற்றவே, பிறருக்கு அளிக்கவோ முழு சுதந்திரம் உண்டு.

சிடி/டிவிடிகளை காப்பி செய்யாதீர்கள்.

நாம் பொதுவாக டிவிடி படங்களை நம்முடைய கணினிகளில் டிவிடி டிரைவ்களில் போட்டு பார்ப்பது பழக்கம். நாம் நண்பர்களிடம் இருந்தோ அல்லது வேறுயாரிடமாவது இருந்தோ படங்களை வாங்கி உடனே பார்த்துவிட்டு தருவதற்கு முடியவில்லை என்றால் நாம் படங்களை காப்பி செய்து அதனை நம் கணினீயில் சேமிப்போம். அவ்வாறு சேமித்த படங்களை டிவிடி டிரைவில் போட்டு பார்ப்பது போன்றே சௌகரியமாக பார்ப்பது என்பது இயலாது. ஒவ்வொரு fileஐயும் நாம் விடியோ ப்ளேயரில் திறக்க வேண்டும். அதில் பலவிதமான fileகள் இருக்கும். நாம் ஒவ்வொன்றாக திறந்து நாம் பார்க்க வேண்டிய அந்த படத்தை பார்ப்பதற்குள் நேரம் ஆகிவிடும். சில fileகள் ஒழுங்காக காப்பி ஆகியிருக்காது. சில டிவிடிக்கள் காப்பி ஆக மறுக்கும்.

need your response

It has been a long time... my rest hours are reduced i only sleep for 5 to 6 hours a day.. so i can't post frequently.. sorry friends.. my university is a good place to refine myself. yes..! thoughts about my programming computers are refined there.. i always wanted share my experience.. but i feared of thinking that it will helpful for you or not.. most of us don't like to hear stories of others. so i stopped blogging and of course having less time.. i have earned some good friends there... who are interested in open-source technology.. very few of us only know the linux platform.. this semester mini project also in open softwares like mysql, postgrey sql i will start blogging my experience if you are interested.. regards, Mani G