所以我有发送者和接收者。发件人的写作功能如下:
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;
}
使用写入功能,我将值12发送给接收器。但是接收器会打印正确的值。它会打印一些随机字节。我尝试将数据转换回整数,但后来我得到0作为值。 知道我错过了什么吗?
欢呼声
塞吉
答案 0 :(得分:0)
buffer_recv
存储在堆栈中。你无法归还。 - Wimmel