Unix Socket Tutorial
Unix Socket Useful Resources
Selected Reading
- Unix Socket - Summary
- Unix Socket - Client Example
- Unix Socket - Server Example
- Unix Socket - Helper Functions
- Unix Socket - Core Functions
- Unix Socket - IP Address Functions
- Unix Socket - Network Byte Orders
- Unix Socket - Ports and Services
- Unix Socket - Structures
- Unix Socket - Client Server Model
- Unix Socket - Network Host Names
- Unix Socket - Network Addresses
- Unix Socket - What is a Socket?
- Unix Socket - Home
Unix Socket Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Unix Socket - Client Example
Unix Socket - Cpent Examples
To make a process a TCP cpent, you need to follow the steps given below &minus ;
Create a socket with the socket() system call.
Connect the socket to the address of the server using the connect() system call.
Send and receive data. There are a number of ways to do this, but the simplest way is to use the read() and write() system calls.
Now let us put these steps in the form of source code. Put this code into the file cpent.c and compile it with gcc compiler.
Run this program and pass hostname and port number of the server, to connect to the server, which you already must have run in another Unix window.
#include <stdio.h> #include <stdpb.h> #include <netdb.h> #include <netinet/in.h> #include <string.h> int main(int argc, char *argv[]) { int sockfd, portno, n; struct sockaddr_in serv_addr; struct hostent *server; char buffer[256]; if (argc < 3) { fprintf(stderr,"usage %s hostname port ", argv[0]); exit(0); } portno = atoi(argv[2]); /* Create a socket point */ sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("ERROR opening socket"); exit(1); } server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,"ERROR, no such host "); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); serv_addr.sin_port = htons(portno); /* Now connect to the server */ if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { perror("ERROR connecting"); exit(1); } /* Now ask for a message from the user, this message * will be read by server */ printf("Please enter the message: "); bzero(buffer,256); fgets(buffer,255,stdin); /* Send message to the server */ n = write(sockfd, buffer, strlen(buffer)); if (n < 0) { perror("ERROR writing to socket"); exit(1); } /* Now read server response */ bzero(buffer,256); n = read(sockfd, buffer, 255); if (n < 0) { perror("ERROR reading from socket"); exit(1); } printf("%s ",buffer); return 0; }Advertisements