在这里搜索我的问题,我发现了更多关于这个的讨论,但似乎这个解决方案并不简单,发送一个带有套接字的结构。
我不明白如何在安全模式下发送带有套接字的结构。
我需要使用struct来发送我的信息,并正确地接收它,而不丢失任何数据。
所以,情况是这样的:客户端必须向服务器发送这个结构:
typedef array<array<double,4>,4> Matrix4x4;
struct data
{
bool shot;
Matrix4x4 position;
};
其中 Matrix4x4 是这样的:
Matrix4x4 T1 = {{
{{-1.0000, 0.0000, -0.0000, 0.1531}},
{{0.0000, 0.0000, -1.0000, 0.1502 }},
{{-0.0000, -1.0000, -0.0000, 1.0790}},
{{0 , 0, 0, 1.0000 }} }};
要发送的每一个数据包,都要改变矩阵,布尔为真或假;我需要接收它,并可以访问布尔和矩阵。
我正在使用PraticalSocket类
http://cs.baylor.edu/~donahoo/practical/CSockets/practical/
用于Windows 7 64位上的发送/接收,在64位项目上使用visual C 2010。
对于发送结构,我正在这样做:
#include "PracticalSocket.h"
#include <iostream>
#include <array>
#include <vector>
#include <Windows.h>
#include <cstdlib>
using namespace std;
#define servAddress "192.168.0.117"
const unsigned short SOCKET_SERVER_PORT = 27500;
typedef array<array<double,4>,4> Matrix4x4;
Matrix4x4 T1 = {{
{{-1.0000, 0.0000, -0.0000, 0.1531}},
{{0.0000, 0.0000, -1.0000, 0.1502 }},
{{-0.0000, -1.0000, -0.0000, 1.0790}},
{{0 , 0, 0, 1.0000 }} }}; //example for testing send
//packet to send
struct data{
bool shot;
Matrix4x4 position;
};
struct data primo = {true, T1};
//socket TCP
int main()
{
try{
TCPSocket sock(servAddress, SOCKET_SERVER_PORT);
sock.send(&primo, sizeof(struct data));
}catch(SocketException &e){
cerr << e.what() << endl;
system("PAUSE");
}
cout<<endl<<"Matrix and bool sendend server"<<endl;
return 0;
}
“发送到”服务器正常(从此客户端,没有错误),但服务器在接收时出错。我注意到 recv() 函数需要一个字符缓冲区...所以,这个错误是由于这个...
有人可以给我一个代码示例,帮助我正确发送和接收此结构,而不会丢失从客户端到服务器的数据?
两台PC是相同的架构(Windows 7 64位,英特尔处理器,相同的RAM和硬件。
预先感谢...
TCP连接是字节流。因此,首先要根据发送和接收的字节来记录您的协议。然后实现代码以精确地发送和接收您指定的字节。然后,您可以通过以下技术进行故障排除:
>
发送方是否准确地发送协议指定的字节?如果没有,停止,发送器已损坏。
接收方是否正确处理协议指定的字节?如果没有,停止,接收器坏了。
协议被破坏了,因为发送者和接收者都遵循它,整个系统仍然无法工作。(这种情况会经常发生。要让协议正确需要很多经验。)
如果您不在字节级别记录协议,则几乎不可能进行故障排除。所以,请不要跳过这一步。
通过网络发送数据时存在几个问题。
问题内容: 我正在使用套接字连接我的Android应用程序(客户端)和Java后端服务器。每次与服务器通信时,我都希望从客户端发送两个数据变量。 1)某种消息(由用户通过界面定义) 2)消息的语言(由用户通过界面定义) 我该如何发送这些消息,以便服务器将每个消息解释为一个单独的实体? 在读取了服务器端的数据并做出了适当的结论之后,我想向客户端返回一条消息。(我想我会没事的) 因此,我的两个问题是如
如何将数据从PHP页面发送到TCP端口? 我正在使用它,但我不能使用任何数据!还有,你知道我怎么才能暂停吗? 有什么问题?
问题内容: 我已经用套接字卡住了4h,我使用的方式是只有一个应用程序作为客户端和服务器,一旦客户端连接, 它将与新客户端一起打开theard,并等待消息。 一旦消息发送到服务器,客户端将收到响应,该部分正在正常工作。 客户专区的一部分: 服务器支持2条消息,第一条是“列表”,发送一条命令是“获取值”。 如果客户端将请求命令“列表”,它将运行以下命令:有一个“服务器/客户端”,它正在发送请求并接收一
问题内容: 我正在建立一个客户-服务器项目。 我需要的是客户端发送一个字符串,例如“ Pendu”,服务器接收该字符串并将一个名为“ Pendu”的对象发送回客户端。 这是我的代码: 该类在包中定义: 我的问题是: 首先,我执行服务器,然后看到控制台中显示的内容。 然后我执行客户端,在控制台中,我收到如下消息: 同时,服务器端未显示任何新内容。 现在,我停止客户端,并显示服务器的所有其他消息: 当
我使用Android应用程序通过TCP套接字与同一局域网上的PC java应用程序进行通信、发送和接收消息。下面是我在android中使用的Asynctask的代码,用于发送消息并从PC接收回复: } 我在onPostExcecute中的祝酒词中显示PC的回复。 Android通过BufferedWriter发送消息,而PC上的java应用程序在BufferedReader中接收消息。 PC在收到
我一直在开发一个简单的python套接字聊天室,客户端和服务器可以在其中相互发送消息。我遇到的问题是服务器和客户端一次只能发送一条消息。我希望它能像任何其他聊天室一样工作,在那里我可以在发送消息时收到消息,任何帮助都会有很大帮助