C++ 在TCP套接字连接上发送int值

C++ 在TCP套接字连接上发送int值,c++,tcp,C++,Tcp,我只想通过套接字发送一个整数,但sendtosocket命令似乎只接受一个字符。我正在努力将int转换成char,以便通过套接字发送它。request_number是我想要转换成字符的int,它是request_char 我没有访问atoi/atof etc命令的权限,所以在这里我尝试了sprintf。但当我运行它时,它什么也不做,甚至不会打印出值。我的sprintf命令有什么错?或者,在tcp套接字上发送int时,是否有其他方法可以避免这种转换 int request_number= 100

我只想通过套接字发送一个整数,但sendtosocket命令似乎只接受一个字符。我正在努力将int转换成char,以便通过套接字发送它。request_number是我想要转换成字符的int,它是request_char

我没有访问atoi/atof etc命令的权限,所以在这里我尝试了sprintf。但当我运行它时,它什么也不做,甚至不会打印出值。我的sprintf命令有什么错?或者,在tcp套接字上发送int时,是否有其他方法可以避免这种转换

 int request_number= 100;
 char request_char[request_number];

    sprintf(request_char, "%i", request_number); 
    send(tcp_new_socket , request_char , strlen(request_char) , 0);

另外,当我在套接字的另一端接收到值时,如何将其转换回int?相同类型的sprintf命令??提前感谢您的帮助。如果需要详细说明,请告诉我。

发送到网络的任何内容都将以字节为单位。。。所以无符号字节是字符,所以您可以看到发送API是字符数组

另一方面,您现在将根据协议[由您定义]接收字节 当您收到时,您需要从字节构造int类型

希望这有帮助

我只想通过套接字发送一个整数,但sendtosocket命令似乎只接受一个字符

错。它接受一个
字符*

int request_number= 100;
char request_char[request_number];

sprintf(request_char, "%i", request_number); 
send(tcp_new_socket , request_char , strlen(request_char) , 0);
我正在努力将int转换成char,以便通过套接字发送它

你当然是。
int
不适合
char
,您不需要这样做。只需提供
int
的地址,并将其强制转换为
char*

int request_number= 100;
char request_char[request_number];

sprintf(request_char, "%i", request_number); 
send(tcp_new_socket , request_char , strlen(request_char) , 0);
此代码与您给出的描述不一致。这里没有任何东西可以将
int
转换为
char
。有一些代码可以将其转换为
char[]
数组,以ASCII格式发送,但这不是您所说的要做的。要仅发送二进制格式的
int

int request_number = 100;
send(tcp_new_socket , (char*)&request_number , sizeof request_number, 0);
相反,在接收器处。但是,您确实应该按网络字节顺序发送
int

int request_number = htons(100);
send(tcp_new_socket , (char*)&request_number , sizeof request_number, 0);

并在接收器处使用
ntohs()
将其重新放入主机顺序。

您无需执行转换。套接字可以发送任何类型的数据。只需将int地址转换为char*,并为套接字提供指针和字节计数。

在实现协议之前,您需要设计一个协议。请查看TCP之上的其他协议(如HTTP、IRC或SMTP)的规范,以了解应该如何做到这一点。为什么是downvote?请解释我提供了为什么网络api是字节数组以及在接收端要做什么的详细信息。。