我试图将整个结构从客户端传递到服务器,反之亦然。 让我们假设我的结构如下 struct temp { int a; char b; } 我正在使用sendto并发送结构variables的地址,并使用recvfrom函数在另一端接收它。 但是我无法获得在接收端发送的原始数据。 在sendto函数中,我将接收到的数据保存到struct temptypes的variables中。 n = sendto(sock, &pkt, sizeof(struct temp), 0, &server, length); n = recvfrom(sock, &pkt, sizeof(struct temp), 0, (struct sockaddr *)&from,&fromlen); 其中pkt是struct temptypes的variables。 尽pipe我正在接收8bytes的数据,但如果我尝试打印它只是显示垃圾值。 任何帮助解决它? 注: 不得使用第三方库。 编辑1:我对这个序列化的概念是新的。但是没有做序列化我不能通过套接字发送结构? 编辑2:当我尝试发送一个string或一个整数variables使用sendto和recvfrom函数我正在接收端的数据正确接收。 为什么不在一个结构的情况下? 如果我不必使用序列化函数,那么我应该单独发送结构的每个成员? 这实际上不是一个合适的解决scheme,因为如果有'n'个成员,那么为了发送或接收数据就会添加“n”行代码。
好吧,这是我一直想弄明白的一个日子。 我们在Windows Phone 7上有一个应用程序,在这个应用程序中,电话join一个多播组,然后向该组发送和接收消息以相互交谈。 请注意 – 这是电话通话。 现在我试图将这个应用程序移植到Windows Phone 8上 – 使用Visual Studio 2012中的“转换为电话8”function – 到目前为止这么好。 直到我尝试testing手机通讯。 手机似乎join了组,他们发送数据包OK。 他们甚至收到他们发给群组的消息 – 但是,任何手机都不会收到来自另一个手机的消息。 以下是我的页面后面的示例代码: // Constructor public MainPage() { InitializeComponent(); } // The address of the multicast group to join. // Must be in the range from 224.0.0.0 to 239.255.255.255 private const string GROUP_ADDRESS = "224.0.1.1"; // […]
我一直有问题让C的套接字API在C ++中正常工作。 具体来说,虽然我包括sys/socket.h ,但仍然有编译时错误告诉我AF_INET没有被定义。 我是否错过了一些显而易见的东西,或者这可能与我在z/OS上进行这种编码的事实有关,而且我的问题更加复杂? 更新 :经过进一步的调查,我发现有一个#ifdef我打。 显然z/OS是不开心,除非我定义我使用的套接字“types”: #define _OE_SOCKETS 现在,我个人不知道这个_OE_SOCKETS实际上是什么,所以如果有任何z/OS套接字程序员在那里(你们全部3个),也许你可以给我一个如何工作的概要? 当然,我可以发布testing应用程序。 #include <sys/socket.h> int main() { return AF_INET; } 编译/链接输出: cxx -Wc,xplink -Wl,xplink -o inet_test inet.C “./inet.C”,行5.16:CCN5274(S)“AF_INET”的名称查找没有find声明。 (I)编译文件./inet.C失败。 目标文件未创build。 sys / sockets.h的检查确实包括了我所需要的定义,就我所知,它并没有被任何#ifdef语句阻塞。 但是我注意到它包含以下内容: #ifdef __cplusplus extern "C" { #endif 它基本上封装了整个文件。 不知道是否重要。