首页 > 其他分享 >cmd客户端

cmd客户端

时间:2024-09-18 17:15:35浏览次数:9  
标签:socketFd struct stAddr int stRemoteAddr cmd include 客户端

cmd_client.c

 1 #include <stdio.h>
 2 #include <sys/socket.h>
 3 #include <netinet/in.h>
 4 #include <arpa/inet.h>
 5 #include <string.h>
 6 #include <unistd.h>
 7 #include <stdlib.h>
 8 #include <sys/types.h>
 9 #include <pthread.h>
10 #include <errno.h>
11 
12 #define SOCKET_PORT_CMD_CLIENT 2001
13 #define SOCKET_PORT_CMD_SERVER 2002
14 #define LOCAL_ADDRESS ("127.0.0.1")
15 #define RECV_BUFFER_LEN 512
16 int main(int argc, char *argv[])
17 { 
18     int opt = 0;
19     int socketFd = -1;
20     struct sockaddr_in stAddr;
21     struct sockaddr_in stClientAddr;
22     struct timeval stTimeInterval = {0,10000};
23     
24     int recvlen = 0;
25     int addrlen = 0;
26     struct sockaddr_in stRemoteAddr = {0};
27     char szBuffer[RECV_BUFFER_LEN] = {0};
28     char szSendBuffer[RECV_BUFFER_LEN] = {0};
29     int index = 5;
30     if (0 > (socketFd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)))
31     {
32         printf("create socket error, errno(%d)\n",errno);
33         return -1;
34     }
35     memset(&stAddr, 0, sizeof(stAddr));
36     stAddr.sin_family = AF_INET;
37     stAddr.sin_port = htons(SOCKET_PORT_CMD_CLIENT);
38     stAddr.sin_addr.s_addr = inet_addr(LOCAL_ADDRESS);
39 
40     if(0 > bind(socketFd, (struct sockaddr*)&stAddr, sizeof(struct sockaddr)))
41     {
42         printf("bind error, errno(%d)\n",errno);
43         return -1;
44     }
45     if(0 != setsockopt(socketFd, SOL_SOCKET, SO_RCVTIMEO, &stTimeInterval, sizeof(struct timeval)))
46     {
47         printf("setsockopt error, errno(%d)\n",errno);
48         return -1;
49     }
50 
51     memset(&stRemoteAddr, 0, sizeof(stRemoteAddr));
52     stRemoteAddr.sin_family = AF_INET;
53     stRemoteAddr.sin_port = htons(SOCKET_PORT_CMD_SERVER);
54     stRemoteAddr.sin_addr.s_addr = inet_addr(LOCAL_ADDRESS);
55     
56     for (int i = 1; i < argc; i++)
57     {
58         if (i == 1)
59         {
60             strcat(szSendBuffer, argv[i]);
61         }
62         else
63         {
64             strcat(szSendBuffer, " ");
65             strcat(szSendBuffer, argv[i]);
66         }    
67     }
68     printf("send buffer:%s\n", szSendBuffer);
69     if(-1 ==sendto(socketFd,szSendBuffer,strlen(szSendBuffer),0,(struct sockaddr*)&stRemoteAddr,sizeof(stRemoteAddr)))
70     {
71          perror("sendto error"); 
72          close(socketFd);
73          exit(1);
74     }
75     
76     while(1)
77     {
78         if(0 < (recvlen = recvfrom(socketFd,szBuffer,RECV_BUFFER_LEN,0,(struct sockaddr*)&stRemoteAddr,&addrlen)))
79         {
80              printf("recv msg:%s\n", szBuffer); 
81              close(socketFd);
82              exit(1);
83         }
84         sleep(5);
85         if (0 >= index--)
86         {
87             break;
88         }
89     }
90 
91     printf("recv error\n");
92     return 0;
93 }
View Code

 

标签:socketFd,struct,stAddr,int,stRemoteAddr,cmd,include,客户端
From: https://www.cnblogs.com/tianxincode/p/18418907

相关文章

  • UDP实现cmd服务
    cmd_server.c/*编译:gcccmd_server.c-lpthread*/#include<stdio.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<unistd.h>#include<stdlib.h>#include<......
  • zblogPHP后台在线升级后提示Call to undefined function Redirect_cmd_end()错误
    当Z-BlogPHP在线升级后提示“CalltoundefinedfunctionRedirect_cmd_end()”错误时,这通常是因为升级过程中某些文件没有正确更新或存在兼容性问题。以下是一些可能的解决步骤:1.检查函数定义问题描述:Redirect_cmd_end() 函数可能未被定义。解决方法:打开Z-BlogPHP......
  • Z-blog应用中心客户端访问故障的临时解决办法
    当遇到Z-Blog应用中心客户端访问故障时,可以尝试以下几种临时解决办法:1.切换连接方式问题描述:客户端设置中的连接方式可能导致访问故障。解决方法:进入Z-Blog后台的应用中心设置。尝试切换不同的连接方式,例如从HTTP切换到HTTPS,或者尝试其他可用的服务器地址。2.......
  • Java客户端SpringDataRedis(RedisTemplate使用)
    文章目录⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结⛄概述SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,......
  • 【网络安全的神秘世界】csrf客户端请求伪造
    ......
  • 微信小程序开发中的客户端与服务端交互
    微信小程序开发中的客户端与服务端交互1.搭建桥梁:客户端与服务端的握手初次见面:理解客户端与服务端的角色握手协议:HTTP与HTTPS的基本通信原理桥梁建设:使用wx.request发起网络请求2.数据的往返:构建高效的数据传输通道轻装简行:简化数据格式提高传输效率JSON之舞:JSON数......
  • 在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container
                                                                图片来源:自己画的ingress是一个API资源。客户端访问ingress的不同urlingress给客户端返回不同的服务。就和nginx反向代理服务器一样。根据......
  • Nginx 4层代理获取客户端真实IP
    架构4层代理配置stream{upstreambackend{server10.4.7.30:80;}server{listen80;proxy_passbackend;proxy_connect_timeout1s;proxy_protocolon;#主要是把这个参数开上}}后端nginx配置注......
  • 游戏客户端中的网络通信:使用Java实现实时数据交换| 网络通信|Java|游戏客户端
    在现代游戏开发中,Java作为一种强大的编程语言,广泛应用于游戏客户端的开发。Java的跨平台特性、丰富的类库以及强大的社区支持使其成为开发高性能、可维护的游戏客户端的理想选择。从简单的2D游戏到复杂的3D游戏,Java能够提供稳健的解决方案来应对各种挑战。本篇文章将深入探讨如何利......
  • 无线1x客户端编写概要
     https://www.kancloud.cn/alex_wsc/android-wifi-nfc-gps/414083文章参考                              form:https://blog.csdn.net/yudelian/article/details/1210360991、https://chujian521.github.io/blog......