我最近正在做一个socket项目。我想通过 Linux 套接字从客户端向服务器发送自定义数据类型(myMail)。这是我的客户代码:
mail pmail;
connect(clientSocket,(struct sockaddr*)&sa,sizeof(sa));
send(clientSocket,&pmail,sizeof(pmail),0);
对于我的服务器,这是问题部分:
int new_socket=.....;
char buffer[1024] = { 0 };
valread = read(new_socket, buffer,
1024 - 1);
mail pmail;
pmail=&buffer;
问题是,当我编译它时,它显示
operand types are ‘mail’ and ‘char (*)[1024]’
。所以我想知道是否有任何方法可以让我将变量 pmail 的内容分配给缓冲区?或者我必须尝试其他方法?
将
buffer
投射到 struct mail
的指针:
int new_socket = .....;
char buffer[1024] = { 0 };
valread = read(new_socket, buffer, 1024 - 1);
if (valread)
struct mail* pmail = (struct mail*)buffer;
或者简单地说:
int new_socket = .....;
struct mail pmail;
valread = read(new_socket, &pmail, sizeof(struct mail));