⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 嵌入式linux编程实现windows监控嵌入式设备的心跳检测
💻 CPP
字号:
// Linux 下编译通过
// 编写:寥智亨
// 日期:2006.3.20
// 说明:目前只发送一串字符,未加入报文结构,所以不能和服务器端格式不兼容

#include <stdio.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define SERVPORT 12345
#define SERVER_IP "127.0.0.1"  /*默认服务IP为自己*/
#define MAXDATASIZE 100  /* 每次最大数据传输量 */

void main (int argc, char *argv[])
{
  int sockfd, recvbytes;
  char buf[MAXDATASIZE];
  char *ServerIP = new char[16]; 
  struct hostent *host;
  struct sockaddr_in serv_addr;

  enum TYPE{BORN, WAKE, SLEEP};  /*节点状态*/
  struct Paragram   /*报文结构*/
  {	int SourceNode;
	TYPE Type;
	int DestinationNode;
	char sin_addr[15];
  };

  Paragram *SendMessenge = new Paragram;
  SendMessenge->SourceNode=102;
  SendMessenge->Type=BORN;
  SendMessenge->DestinationNode=22;
  strcpy(SendMessenge->sin_addr, ServerIP);

  if (argc < 2)
      strcpy(ServerIP ,SERVER_IP);  /*没输入服务器IP时默认为本机*/
  else
	  strcpy(ServerIP ,argv[1]);
  printf("Connect to %s\n", ServerIP);
  
  if ((host = gethostbyname (ServerIP)) == NULL)
    {
      perror ("gethostbyname 出错!");
      exit (1);
    }
  if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) == -1)
    {
      perror ("socket 创建出错!");
      exit (1);
    }

  serv_addr.sin_family = AF_INET;
  serv_addr.sin_port = htons (SERVPORT);
  serv_addr.sin_addr = *((struct in_addr *) host->h_addr);  /*得到服务器地址*/
  memset(&(serv_addr.sin_zero),0, 8);

  if (connect(sockfd, (struct sockaddr *) &serv_addr,sizeof (struct sockaddr)) == -1)
    {
      perror ("connect 出错!");
      exit (1);
    }
  if (send (sockfd, (char*)SendMessenge, 26, 0) == -1)
  	  perror ("send 出错!");

  if ((recvbytes = recv (sockfd, buf, MAXDATASIZE, 0)) == -1)
    {
      perror ("recv 出错!");
      exit (1);
    }
  buf[recvbytes] = '\0';
  printf ("Received: %s", buf);

  closesocket (sockfd);
}

⌨️ 快捷键说明

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