使用 UDP 传输对象黑白客户端/服务器
Transfer of objects b/w Client/Server using UDP
我想将对象从服务器发送到客户端。通过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";
解决了,问题。我按照@snixtho建议做了。工作代码是:
数据:
class data
{
private:
int number;
float gpa;
public:
data(int number, float gpa) {
this->number = number;
}
void print() {
cout<<"number : "<<number<<"gpa : "<<gpa;
}
int getNumber() {
return this->number;
}
int getGpa() {
return this->number;
}
};
服务器:
data *obj;
int number = 0;
float gpa = 0.0;
if (recvfrom(conn_sock, buf, buff_length, 0, (struct sockaddr*)&client_addr, &slen) == -1)
cout<<"ERROR: recvfrom()";
number = atoi(buf);
if (recvfrom(conn_sock, buf, buff_length, 0, (struct sockaddr*)&client_addr, &slen) == -1)
cout<<"ERROR: recvfrom()";
gpa = atoi(buf);
obj = new data(number, gpa);
cout<<"nRECEIVED from Client : ";
obj->print();
cout<<"nn";
客户:
data *obj = new data(11, 3.2);
int n=0; // n is the number of bytes of 'buf' after converting the integer to 'buf'
n = sprintf(buf, "%d", obj->getNumber());
if(sendto(conn_sock, buf, buff_length, 0, (struct sockaddr*)&serv_addr, addr_len) == -1)
cout<<"ERROR: Problem sending data";
n = sprintf(buf, "%f", obj->getGpa());
if(sendto(conn_sock, buf, buff_length, 0, (struct sockaddr*)&serv_addr, addr_len) == -1)
cout<<"ERROR: Problem sending data";
这正在解决问题,但我相信还有其他更好的方法可以做到这一点。
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- Java 客户端C++服务器数据发送/接收问题
- ZMQ - 客户端服务器:客户端意外关闭,服务器如何检测到?
- 用于本地网络运行的客户端服务器体系结构
- TCP套接字(客户端-服务器)recv()返回-1值
- C++启动另一个程序(客户端-服务器)的程序
- C++客户端/服务器聊天应用程序 - 从 Ubuntu 命令窗口扫描输入
- UDP客户端/服务器程序在不同的IP和端口上通信超过2个插座
- 为什么在此 UDP 客户端/服务器示例中没有必要绑定客户端套接字?
- TCP在客户端服务器之间传输时,数据是否有任何限制
- 是否可以添加多个服务器地址?(Asio,客户端>服务器)
- 通过TCP在客户端/ C#服务器之间传输文件C++
- TCP 客户端服务器程序
- 客户端服务器回声程序进入UDP的僵局
- 如何制作具有同步数据读/写功能的多客户端服务器
- Qt,客户端-服务器关系
- Winsock 简单客户端服务器,接收失败
- 在C++中对客户端/服务器应用进行单元测试
- 在客户端/服务器计算器C 方面遇到麻烦
- 客户端服务器简单示例非块