繁体   English   中英

在 C 中使用读写通过网络发送整数值的问题

[英]Problems with sending integer values over network using read & write in C

所以我有一个发送者和一个接收者。 发送方的写函数如下所示:

void write_ConnectorD_out_dispatch_user(GEN_TYPE_int *sockfd,struct sockaddr_in* addr,GEN_TYPE_char *prefix,GEN_TYPE_int value){
    GEN_TYPE_int n;
    if (connect(*sockfd, (struct sockaddr *) addr, sizeof(*addr)) < 0) {
        printf("Receiver not yet ready \n");
        exit(1);
    }
    else {
        GEN_TYPE_char append[256];
        GEN_TYPE_char data[256];
        sprintf(data, "%d", value);
        strcpy(append, prefix);
        strcat(append, data);
        n = write(*sockfd, append, strlen(append));
        if (n < 0) {
            // error("ERROR writing from socket");
        }
    }

接收器的读取功能如下所示:

GEN_TYPE_char *read_ConnectorD_in_dispatch_high(GEN_TYPE_int *sockfd,GEN_TYPE_int *newsockfd,GEN_TYPE_socklen_t *clilen,struct sockaddr_in* cli_addr){
    GEN_TYPE_int n;
    *newsockfd = accept(*sockfd, (struct sockaddr *) cli_addr, clilen);
    GEN_TYPE_char buffer_recv[256];
    bzero(buffer_recv, 256);
    n = read(*newsockfd, buffer_recv, 255);
    if (n < 0) {
        // error("ERROR reading from socket");
    }
    return buffer_recv;
}

使用 write 函数,我将值 12 发送到接收器。 但是接收器不会打印正确的值。 它会打印一些随机字节。 我尝试将数据转换回整数,但随后我得到 0 作为值。 知道我缺少什么吗?

干杯

谢尔盖

buffer_recv存储在堆栈中。 你不能退还那个。 – 威梅尔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM