社区
ATL
帖子详情
SOCKET 收到数据后如何处理???
sforiz
2008-12-31 10:53:45
从客户端发送X,Y,Z坐标信息到服务器,服务器在收到这些数据之后把它传给其它客户端,其它客户端怎样获取这些坐标数据呢,也就是怎样解析或翻译这些数据。
我在做一个小的游戏实例,但在服务器把数据传给客户端之后,不知道怎么处理、解析。
...全文
218
11
打赏
收藏
SOCKET 收到数据后如何处理???
从客户端发送X,Y,Z坐标信息到服务器,服务器在收到这些数据之后把它传给其它客户端,其它客户端怎样获取这些坐标数据呢,也就是怎样解析或翻译这些数据。 我在做一个小的游戏实例,但在服务器把数据传给客户端之后,不知道怎么处理、解析。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sforiz
2009-01-07
打赏
举报
回复
[Quote=引用 7 楼 rick29 的回复:]
如果对性能要求不高,可以考虑直接用CSocket类,并配以一个可以序列化的类(该类中包含了你的X、Y、Z成员)来实现。
这样的好处是,你想把你的类发送到SOCKET,就向CSocket去序列化;你想把你的类存到文件,就向CFile去序列化。总之,有了序列化,想往哪里存都OK。
[/Quote]
性能无所谓
rick29
2009-01-07
打赏
举报
回复
如果对性能要求不高,可以考虑直接用CSocket类,并配以一个可以序列化的类(该类中包含了你的X、Y、Z成员)来实现。
这样的好处是,你想把你的类发送到SOCKET,就向CSocket去序列化;你想把你的类存到文件,就向CFile去序列化。总之,有了序列化,想往哪里存都OK。
sforiz
2009-01-07
打赏
举报
回复
我做的是将游戏中小动物移动时产生的坐标信息,传到一个服务器,服务器把数据传回,在客户端调用函数使小动物移动。通信用的是TCP、SOCKET,程序语言C++,对等的C/S结构。知道的说一下,先谢谢了,如果问题在今天内解决可以加50分。
sforiz
2009-01-07
打赏
举报
回复
[Quote=引用 10 楼 weichaichang 的回复:]
我在下载区上传过这样的程序,去下载区看看吧。你不需要做具体的解析工作。只是需要关注数据的发送和接收问题。接收的时候,如果简单的话,就在线程里处理一下数据,正规的话,就用消息响应,在消息响应函数里处理。
[/Quote]
能发一下你上传的资源的链接吗?
weichaichang
2009-01-07
打赏
举报
回复
我在下载区上传过这样的程序,去下载区看看吧。你不需要做具体的解析工作。只是需要关注数据的发送和接收问题。接收的时候,如果简单的话,就在线程里处理一下数据,正规的话,就用消息响应,在消息响应函数里处理。
sforiz
2009-01-04
打赏
举报
回复
void InitKeyboard(HINSTANCE hInstance){//初始键盘设备、、、
DirectInput8Create(hInstance,DIRECTINPUT_VERSION,IID_IDirectInput8,(LPVOID*)&g_pInput,NULL);
g_pInput->CreateDevice(GUID_SysKeyboard,&g_pInputDevice,NULL);
g_pInputDevice->SetDataFormat(&c_dfDIKeyboard);
g_pInputDevice->SetCooperativeLevel(hWnd,DISCL_NONEXCLUSIVE|DISCL_FOREGROUND|DISCL_NOWINKEY);
g_pInputDevice->Acquire();
}
int ReadKeyboard()//获取按键
{
int key=0;
g_pInputDevice->GetDeviceState(sizeof(g_state),g_state);
if(0x80&g_state[DIK_RIGHT])
key=4;
if(0x80&g_state[DIK_LEFT])
key=3;
if(0x80&g_state[DIK_UP])
key=1;
if(0x80&g_state[DIK_DOWN])
key=2;
return key;
}
.......
switch (ReadKeyboard()){
case 3:{x--;break;}
case 4:{x++;break;}
case 1:{z--;break;}
case 2:{z++;break;}
}
用TCP通信怎样获取其中按的键,
#include "stdafx.h"
#include "winsock.h"
WSADATA wsaData; // 初始化WSA时使用
SOCKET s; // socket
SOCKADDR_IN ServerAddr; // 服务器地址
int Port=9000; // 服务器端口
int _tmain(int argc, _TCHAR* argv[])
{
WSAStartup(MAKEWORD(2,2),&wsaData) ; //启动winsock的库;
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP) ; //初始化socket
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(Port);
ServerAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
connect(s,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr));
send(s,"From a client",13,0);
while(1){
char buf[256];
memset(buf,0,sizeof(buf));
scanf("%s",buf);
send(s,buf,sizeof(buf),0);
memset(buf,0,sizeof(buf));
recv(s,buf,sizeof(buf),0);
printf("%s\n",buf);
}
closesocket(s);//关闭socket,关闭WSA
return 0;
}
sforiz
2009-01-04
打赏
举报
回复
[Quote=引用 3 楼 oyljerry 的回复:]
客户端和服务端需要有一个统一的协议来定义这个结构,双方都知道怎么解析和拼接
[/Quote]
TCP
zaodt
2009-01-01
打赏
举报
回复
这个就是你自己定义的【协议】。
x y z 三个坐标,假如使用 int 变量来存储的话,那么就是 12 个字节;
就像 1 楼说的,把它们定义为一个结构体,然后发送;
收到后,然后按顺序一个个取出来即可。
你自己试着写写看,遇到具体问题再来问。
yang_fujiang
2009-01-01
打赏
举报
回复
LZ
LS的诸位仁兄都已经讲得很清楚了呢
如果你对OSI通讯协议层了解一点儿的话
其实都是定义好数据机构进行组包 解包的
oyljerry
2009-01-01
打赏
举报
回复
客户端和服务端需要有一个统一的协议来定义这个结构,双方都知道怎么解析和拼接
wiowei
2008-12-31
打赏
举报
回复
怎么发的就怎么收呀?用了结构体?
typedef struct pos
{
int x;
int y;
int z;
} point;
point p[100];
char buff[1000];
//比如每次发10个
int len = sizeof(point)*10;
memcpy(buff,p,len);
serversocket.Send(buff,len);
...
//接收
clientsocket.Receive(buff,len);
memcpy(p,buff,len);
Socket
详解
“一切皆
Socket
!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的
socket
。 ——有感于实际编程和开源项目研究。 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠
socket
?那什么是
socket
?
socket
的类型有哪些?还有
close
socket
干了什么?
socket
编程过程中往往会遇到这样那样的问题,出现了这些问题,有的是由于并发访问量太大造成的,有些却是由于代码中编程不慎造成的。比如说,最常见的错误就是程序中报打开的文件数过多这个错误。
socket
建立连接的时候是三次握手,这个大家都很清楚,但是
socket
关闭连接的时候,需要进行四次挥手,但很多人对于这四次挥手的具体流程不清楚,吃了很多...
网络通信
socket
_什么是
socket
?通信原理是怎样的呢?
什么是套接字?
socket
的中文翻译过来就是“套接字”。套接字是什么,它的英文含义:插座。
Socket
就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被其他进程占用。而我们建立连接就像把插头插在这个插座上,创建一个
Socket
实例开始监听后,这个电话插座就时刻监听着消息的传入,谁拨通我这个“IP 地址和端口”,我就接通谁。实际上,S...
C# 中
Socket
通讯接收
数据
不完整
处理
c# 中
Socket
通讯接收
数据
不完整
处理
最近在做一款粮情检测软件,遇到一个问题,就是硬件测温板子发过来的
数据
分包发送过来,这边接收不完整,在网上查找资料,大致都是判断剩下的有效
数据
是否还有,有的话继续接收,如代码 while (true) { try { ...
C#
Socket
接受
数据
不全的
处理
由于
Socket
一次传输
数据
有限,因此需要多次接受
数据
传输。 解决办法一: int numberOfBytesRead = 0; int totalNumberOfBytes = 0; do { numberOfBytesRead = my
Socket
.Receive(receivedData,totalNumberOfBytes , my
Socket
.ReceiveBufferSize,
Socket
F
ATL
3,248
社区成员
48,529
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章