tom.c

来自「用五个实例来解释linux下的c编程」· C语言 代码 · 共 80 行

C
80
字号
/******* 客户端程序  tom.c ************/#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/socket.h>#define BUFSIZE 1024intmain (int argc, char *argv[]){  int sockfd;  char buffer[BUFSIZE] = "I love you!";  struct sockaddr_in server_addr;  int portnumber, nbytes;  if (argc != 3)    {      fprintf (stderr, "Usage:%s hostname portnumber\a\n", argv[0]);      exit (1);    }  if ((portnumber = atoi (argv[2])) < 0)    {      fprintf (stderr, "Usage:%s hostname portnumber\a\n", argv[0]);      exit (1);    }  /* 客户程序开始建立sockfd描述符 */  if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) == -1)    {      fprintf (stderr, "Socket Error:%s\a\n", strerror (errno));      exit (1);    }  /* 客户程序填充服务端的资料 */  bzero (&server_addr, sizeof (server_addr));  server_addr.sin_family = AF_INET;  server_addr.sin_port = htons (portnumber);  server_addr.sin_addr.s_addr = inet_addr (argv[1]);  /* 客户程序发起连接请求 */  if (connect      (sockfd, (struct sockaddr *) (&server_addr),       sizeof (struct sockaddr)) == -1)    {      fprintf (stderr, "Connect Error:%s\a\n", strerror (errno));      exit (1);    }  /* 发送“I love you!” */  if ((nbytes = send (sockfd, buffer, strlen (buffer), 0)) == -1)    {      fprintf (stderr, "Send Error:%s\n", strerror (errno));      exit (1);    }  memset (buffer, 0, sizeof (buffer));  /* 接收回复 */  if ((nbytes = recv (sockfd, buffer, sizeof (buffer), 0)) == -1)    {      fprintf (stderr, "Read Error:%s\n", strerror (errno));      exit (1);    }  buffer[nbytes] = '\0';  printf ("%s\n", buffer);  /* 结束通讯 */  close (sockfd);  exit (0);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?