यूनिक्स सॉकेट - क्लाइंट उदाहरण

एक प्रक्रिया को टीसीपी ग्राहक बनाने के लिए, आपको नीचे दिए गए चरणों का पालन करना होगा & minus;

  • सॉकेट () सिस्टम कॉल के साथ एक सॉकेट बनाएं ।

  • कनेक्ट () सिस्टम कॉल का उपयोग करके सर्वर के पते पर सॉकेट कनेक्ट करें।

  • डेटा भेजें और प्राप्त करें। इसे करने के कई तरीके हैं, लेकिन सबसे आसान तरीका है रीड () और राइट ( सिस्टम ) कॉल का उपयोग करना।

अब हम इन चरणों को स्रोत कोड के रूप में रखते हैं। इस कोड को फाइल में डालेंclient.c और इसके साथ संकलित करें gcc संकलक।

सर्वर से कनेक्ट करने के लिए, इस प्रोग्राम को चलाएं और होस्टनाम और सर्वर के पोर्ट नंबर को पास करें, जो आपको पहले से ही किसी अन्य यूनिक्स विंडो में चलाना होगा।

#include <stdio.h>
#include <stdlib.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\n", 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\n");
      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\n",buffer);
   return 0;
}