Socket Programming- TCP client

2 01 2008

This a very basic tutorial for TCP server-client.

The code against tcp-server , the Clients Code

#define SRVR_PORT 4030 // The Server’s Port which Client is going to Connect.

#define MAXBUFLEN 100// Buffer Size for Sending/Receiving

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

//Declaration
int sockfd;
struct sockaddr_in their_addr; // connector’s address information
struct hostent *he;
int numbytes;
char buf[MAXBUFLEN];

//The Code to Take Server’s Address at Commandline

//You can remove this and assign your server’s Address you want

if (argc != 2)
{
fprintf(stderr,”usage: ./client 127.0.0.1\n”);
exit(1);
}

if ((he=gethostbyname(argv[1])) == NULL) { // get the host info
perror(“gethostbyname”);
exit(1);
}

//Creating the Socket(The Door for Communication)

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror(“socket”);
exit(1);
}

//Setting the Attributes for Server Address


their_addr.sin_family = AF_INET; // host byte order
their_addr.sin_port = htons(SRVR_PORT); // short, network byte order
their_addr.sin_addr.s_addr = inet_addr(“127.0.0.1″);//*((struct in_addr *)he->h_addr);
memset(&(their_addr.sin_zero),”,8); // zero the rest

int addrlen = sizeof(struct sockaddr);

//Connecting to The Server

//connect return the status for successful connection or failure

int status;
status = connect(sockfd,(struct sockaddr*)&their_addr,addrlen);

while(1)
{

//Taking Input msg from Console

//Remove this if you not want from console Then use strcpy to fill the buffer

cout << “Enter ur message: “;
gets(buf);

//The buffer conatain the message you want to send to server

// The send method sends to the sevrer , just give socket id , buffer , and buffer size to send

// and off course give error on failure

if ( (numbytes=send(sockfd, buf, strlen(buf) , 0)) == -1)
{
perror(“send”);
exit(1);
}

// To Nullify or Empty to the buffer use memset method

memset(buf,”,MAXBUFLEN-1);

// The recv method is used for tcp recive , just sock id, buffer in which recv and length

// method return non-positive value for error

if ((numbytes=recv((int)sockfd,buf, MAXBUFLEN-1, 0)) == -1)
{
perror(“recv”);
exit(1);
}

cout << “from server>” << buf << endl;
memset(buf,”,MAXBUFLEN-1);

}

printf(“sent %d bytes to %s\n”, numbytes,inet_ntoa(their_addr.sin_addr));

close(sockfd); // It’s good to close the socket(the door) after Communication

return 0;

}

Let me know if you not uderstand any thing. I will upload the complete source code.

Advertisements




Imagine Cup in Pakistan

10 12 2007


The Olympics for Programmers   

“Imagine Cup is an annual competition sponsored and hosted by Microsoft Corp. which brings together young technologists worldwide to help resolve some of the world’s toughest challenges.”

This year, Microsoft is calling on young programmers, artists and technologists around the world to “imagine a world where technology enables a sustainable environment.”

A number of Competition Categories for every one. Now every one can participate no excuses….!

Competition Categories includes

  • Software Design (for team. bIg!)
  • Game Development (for good logicians, artists)
  • IT Challenge( for single : to develop, deploy, and maintain IT systems)
  • Algorithm( for Hardcore CS students)
  • Photography(for every one? Yeah, i am not joking)
  • Short Film(for every one)
  • Interface Design(for girls han? no for all who have some good aesthetic,artistic,imaginative(too much 🙂 ) sense)

and ……. many other.

for detail just go http://www.imaginecup.com/ Its Fun.!