我需要从带有 write() 函数的TCP C服务器传递一个整数,并在具有 read() 函数的客户端中接收它 .
在我的服务器中,让我们说吧
int check = 0
如何使用write()函数发送它?我试过我的服务器:
if (write(connfd, (const char *)&check, 4)) {
perror("Write Error");
exit(1);
}
在我的客户端:
if (n = read(sockfd, &check, 4) > 0) {
printf("ok");
}
但是这种方法既不起作用又感觉不自然 . 我知道我每次都要传递一个缓冲区,但有没有办法加快速度?
另外,重要的是我需要创建一个带有大量变量传输的服务器/客户端程序 . 我不能同时传递多个变量吗?
编辑:当我说它不起作用我的意思是我得到“写错误:成功” . connfd和sockfd之前已声明如下:
服务器:
if ((connfd = accept(listenfd, (struct sockaddr *) NULL, NULL)) < 0) {
perror("Accept Error");
exit(1);
}
客户:
if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) {
fprintf(stderr,"Connect Error\n");
exit(1);
}
1 回答
你说它不起作用,你的意思是什么?
在通过网络发送整数时必须记住的事项是字节序问题,整数在不同的计算机上可能有不同的大小(但在您的情况下可能不是问题) . 您还需要一个
sendall
方法,如this:以及类似的readall
方法 .关于你的最后一个问题,你确实可以通过网络发送4个整数,你只需要将它们复制到一个字节数组(unsigned char数组),并在
write
方法调用中指定该数组以及相应的数组/数据大小 .