c++ - 发送和十六进制消息时套接字代码 C++ 的问题
问题描述
我尝试将十六进制数据发送到另一台设备。编译不会导致错误。但是当我从终端启动该功能时,什么都没有发生,但灯应该打开。我在connect()上放了一个cout,看看我是否有一些连接问题,但它回答为0(所以我没有问题)也许这就是我编写十六进制代码的方式?除了代码之外,我还插入了使用十六进制代码执行的命令行。奇怪的是,如果我使用任何具有相同参数的程序,如 PacketSender,它就可以工作。
./main 192.168.2.170 26810000A7
在附件中,我还添加了在 PacketSender 上制作的屏幕截图。此外,我可以说的是,如果我将 recv () 命令留在代码中,一旦我从终端发出命令,提示将保持等待状态......如果我改为评论recv () 一旦我从提示符下发出命令,它就会返回到提示符但不做任何事情(所以不开灯)。有没有人有任何想法?
#include <stdio.h>
#include <errno.h>
#include <string>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <cstring>
#include <unistd.h>
#include <iostream>
#include <unistd.h>
using namespace std;
// per compilare gcc connect_PE.cpp -lstdc++ -o main
int main(int argc, char *argv[])
{
int sockfd, n;
struct sockaddr_in servaddr;
std::string serveraddr = argv[1];
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(serveraddr.c_str());
servaddr.sin_port = htons(9761);
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
cout << connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
const std::string hex = argv[2];
char *number = strcpy(new char[hex.length() + 1], hex.c_str());
send(sockfd, &number, 8, 0);
recv(sockfd, &number, 8, 0);
}
解决方案
推荐阅读
- cookies - 读取 cookie 或向 Google 跟踪代码管理器发送信息
- php - Codeigniter 查询生成器类结果
- excel - Excel/VBA:清除列中的小值
- opencv - 检测图像中的手绘电路元件,检测文本,建立连接树
- sql - PostgreSQL 通过查询获得所有数据类型的最大限制
- javascript - 同一根上的路由器链接中的 Angular 6 冲突
- regex - 在 Google Docs 中用一个换行符替换多个换行符
- python - 云预测和本地预测不返回相同的结果
- r - 闪亮的服务器无法显示仪表板主体功能
- php - 在 Laravel 中从控制器到没有 foreach 循环的视图的变量