【发布时间】:2014-11-30 18:24:34
【问题描述】:
我想将一个对象从服务器发送到客户端。通过UDP。在 C++ 中。我试图简单地向客户端发送一个引用,并在客户端中创建一个指针来引用这个地址。我尝试过的代码是:
数据:
class data
{
private:
int number;
public:
data(int number) {
this->number = number;
}
void print() {
cout<<"number : "<<number;
}
};
服务器:
data *obj;
if (recvfrom(conn_sock, obj, sizeof(data), 0, (struct sockaddr*)&client_addr, &slen) == -1)
cout<<"ERROR: recvfrom()";
else cout<<"SUCCESS: recvfrom()";
cout<<"\nRECEIVED from Client : ";
obj->print();
客户:
data *obj = new data(11);
if(sendto(conn_sock, &obj, sizeof(data), 0, (struct sockaddr*)&serv_addr, addr_len) == -1)
cout<<"ERROR: Problem sending data";
else cout<<"SUCCESS: sending object";
【问题讨论】:
-
您不能只通过网络发送对对象的引用。如果客户端在另一台机器上,它就无法访问服务器机器的内存,也无法访问对象。我建议您将对象内部的信息分解为字节,发送,在客户端解析,然后根据解析的信息创建对象。
-
是的,你是对的。我没有考虑那件事。我的客户端和服务器在同一台机器上,这就是我这样做的原因。现在我遇到了问题。谢谢。
标签: c++ udp client-server