任何人都可以告诉我如何从客户端向服务器发送整数并添加它们 在c。
我能够成功发送字符串,但我无法弄清楚如何发送 整数。
请帮帮我!!下面编写的代码用于读取字符串。我怎样才能改变它 它来读取和添加整数。
#define SOCK_PATH "echo_socket"
int main(void)
{
int s, t, len;
struct sockaddr_un remote;
char str[100];
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
printf("Trying to connect...\n");
remote.sun_family = AF_UNIX;
strcpy(remote.sun_path, SOCK_PATH);
len = strlen(remote.sun_path) + sizeof(remote.sun_family);
int val=connect(s, (struct sockaddr *)&remote, len);
if ( val< 0) {
perror("connect");
exit(1);
}
printf("Connected.\n");
printf("ENTER THE NUMBERS:");
while(printf("> "), fgets(str, 100, stdin), !feof(stdin)) {
if (send(s, str, strlen(str), 0) == -1) {
perror("send");
exit(1);
}
if ((t=recv(s, str, 100, 0)) > 0) {
str[t] = '\0';
printf("echo> %s", str);
} else
{
if (t < 0) perror("recv");
else printf("Server closed connection\n");
exit(1);
}
}
答案 0 :(得分:3)
简单:
int my_int = 1234;
send(socket, &my_int, sizeof(my_int), 0);
上面的代码通过套接字发送整数。在另一方接收它:
int my_int;
recv(socket, &my_int, sizeof(my_int), 0);
但是,如果两个程序在具有不同字节顺序的系统上运行,请小心。
编辑:如果您担心平台兼容性,字节排序等问题,然后将所有数据转换为一端的字符串,然后将其转换回另一端,则可能是最佳选择。参见例如来自cnicutar的答案。
答案 1 :(得分:2)
您可以使用sprintf
将其转换为字符串,然后strtoul
将其转换为整数。或者你可以只有memcpy
整数来自char数组。