在TCP套接字连接上发送int值
Sending an int value on a TCP socket connection
我想做的就是通过套接字发送一个整数,但似乎sendto套接字命令只接受一个字符。我正在努力改变我的int成一个字符通过套接字发送它。request_number是int,我想把它转换成字符,也就是request_char。
我无法访问atoi/atof等命令,所以这里我尝试了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命令??提前感谢任何帮助。
所有我想做的是通过套接字发送一个整数,但似乎sendto套接字命令只接受一个字符。
是错误的。它接受一个char *
我正在努力将我的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*,并将指针和字节计数提供给套接字。
发送到网络的任何内容都将以字节为单位…所以unsigned bytes是char,所以你看到send API是char数组。
在另一边,你现在将接收基于协议的字节[由你定义]接收时,需要从字节
构造int类型希望能有所帮助
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 调用'begin(int [n])'没有匹配函数
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 没有显式声明的int[]中的foreach
- 在c++中访问int到类对象的映射时出错
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为什么我无法更改"set<set>"循环中的值<int>
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- C++int via socket send():Linux/MacOS上TCP包中的different值
- 在TCP套接字连接上发送int值