用于在c中添加整数的套接字程序

时间:2012-07-12 10:20:21

标签: c sockets

任何人都可以告诉我如何从客户端向服务器发送整数并添加它们   在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);
 }

}

2 个答案:

答案 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数组。