Skip to main content

simple tcp echo server

echoserver.c


//coded by m4n1G
//6-1-2014
//tcp echo server in unix env
#include "stdlib.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "netinet/in.h"
#include "arpa/inet.h"

int main(int argc, char** argv) {
    int server_fd, client_fd;
    char c;
    struct sockaddr_in serv_addr;

    //create a socket
    server_fd = socket(AF_INET,SOCK_STREAM,0);

    //getting ready to bind
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(atoi(argv[1]));
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    //bind
    bind(server_fd, (struct sockaddr*) &serv_addr, sizeof(serv_addr));

    //listen to one queue
    listen(server_fd,1);
    
    //accept one client
    client_fd = accept(server_fd, NULL, NULL);

    //read and write until ^D from client
    while(read(client_fd, &c, 1)) { //read from client
    putchar((int)c);
    write(client_fd, &c, 1); // write to client
    }

    //close the connection
    close(client_fd);
    close(server_fd);
    return 0;
}
echoclient.c


//coded my m4n1g
//on 6-1-2014
//tcp echo client

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

int main(int argc, char** argv) {
    int client_fd;
    struct sockaddr_in serv_addr;
    char c;
    
    //create socket
    client_fd = socket(AF_INET,SOCK_STREAM,0);

    //ready to bind
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(atoi(argv[2]));
    serv_addr.sin_addr.s_addr = inet_addr(argv[1]);

    //connect to server
    connect(client_fd, (struct sockaddr*) &serv_addr, sizeof(serv_addr));

    //write to echo server
    while((c=(char) getchar())!=EOF) {
    write(client_fd,&c,1);
    read(client_fd,&c,1);
    putchar((int)c);
    }

    close(client_fd);
    return 0;
}

Comments

Popular posts from this blog

கட்டற்றமென்பொருள் பற்றிய மாத மின்இதழ்

உலகெங்கிலும் உள்ள தமிழ் மக்களுக்கு கணினிதொழில்நுட்பத்தை பற்றி அறிமுகம் செய்யும் கணியம் என்ற புதிய மாத மின்னிதழை வெளியிடுவதில் பெருமகிழ்ச்சி அடைகிறோம். கணினி கற்க ஆங்கிலம் தடையாக இருந்த காலம் மாறி தொழில்னுட்பங்கள் யாவும் தமிழில் பெருகும் இந்த காலத்தில் மென்பொருள் பற்றிய நுட்பங்களை தமிழில் வழங்குவதில் பெருமை கொள்கிறோம். இந்த இதழின் கட்டுரைகள் : கட்டற்ற மென்பொருள் லினக்ஸ் பயனர் குழு – ஓர் அறிமுகம் உபுண்டு நிறுவுதல்

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

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

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

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