socket里面怎么样发送有struct结构的数据->我是真的急啊 socket怎么样发送有struct结构的数据send里面用的是char型的数据比如说qq里面的一个人有姓名,年龄,性别等等想到像下面这样发送|姓名|年龄|性别|可是要是里面包含|就对不牢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 typede struct { char name[10]; char passwd[10];}DEMOSTR;DEMOSTR demo;send(sockffd,&demo,sizeof(demo),0); typede struct { char name[10]; char passwd[10];}DEMOSTR;DEMOSTR demo;send(sockffd,(const void *)&demo,sizeof(demo),0); 上面两位我用接受的数据取不到值啊SEND如你们所说 int nReceived=m_pSocket->Receive(newFriend,BUFFER_SIZE,0); //newFriend=(MYFRIEND*)buffer; TRACE("用户名=%s\n",newFriend->Name); MYFRIEND* newFriend =new MYFRIEND;int nReceived=m_pSocket->Receive(newFriend,BUFFER_SIZE,0);TRACE("用户名=%s\n",newFriend->Name); 发送MYFRIEND* newFriend =new MYFRIEND;newFriend->Name="XXX";int nReceived=m_pSocket->send(newFriend,BUFFER_SIZE); 发送数据MyMsg msgSend;ZeroMemory(&msgRead,sizeof(msgRead));int isend = 0;while(isend<sizeof(msgSend)){ int nCharSend=send(ClientSock,(char*)(&msgSend+isend),sizeof(msgSend)-isend,0); isend+=nCharSend; if (WSAGetLastError()==SOCKET_ERROR) { //发送数据错误 return FALSE; }}return TRUE;接收数据:MyMsg msgRead;ZeroMemory(&msgRead,sizeof(msgRead));int irecv = 0;while(irecv<sizeof(msgRead)){ int nCharSend=recv(ClientSock,(char*)(&msgRead+irecv),sizeof(msgRead)-irecv,0); irecv+=nCharSend; if (WSAGetLastError()== SOCKET_ERROR) { //接收数据发生错误 return 0; }}其中MyMsg是你的结构体名称。放分吧,我已经回答了你的问题:) 有点小错误,发送时可不能来个ZeroMemory操作,要不然要发的内容都没了发送数据MyMsg msgSend;//在这样里给你的结构成员赋值。int isend = 0;while(isend<sizeof(msgSend)){ int nCharSend=send(ClientSock,(char*)(&msgSend+isend),sizeof(msgSend)-isend,0); isend+=nCharSend; if (WSAGetLastError()==SOCKET_ERROR) { //发送数据错误 return FALSE; }}return TRUE; typede struct { char name[10]; char passwd[10];}DEMOSTR;DEMOSTR demo;if(send(sockffd,(char *)&demo,sizeof(demo),0)==SOCKET_ERROR)如果这样还不ok的话,就没道理了 用find能否在vector中正确查找汉字? VC如何获取局域网计算机列表中的共享目录 C++下,有没好的结合CDialog类来实现的观察者模式实现?听说JAVA下有很成功的例子!VC++下那里有? 从句柄获取窗口类型 为什么我无法给该函数体加代码呢? 已经能够判断出某个盘符是否属于IDE硬盘的分区。请问如何判断出某个盘符是否属于SCSI硬盘的分区??? 开放IE插件时的问题 皮肤设计 请教图像文件格式转换问题! 请教VSS的两个问题 如何检测TCP Socket已经断掉? 请问:在XP系统中,可以同时装VS.net和VC6.0吗?
{
char name[10];
char passwd[10];
}DEMOSTR;DEMOSTR demo;send(sockffd,&demo,sizeof(demo),0);
{
char name[10];
char passwd[10];
}DEMOSTR;DEMOSTR demo;send(sockffd,(const void *)&demo,sizeof(demo),0);
我用接受的数据取不到值啊
SEND如你们所说
int nReceived=m_pSocket->Receive(newFriend,BUFFER_SIZE,0);
//newFriend=(MYFRIEND*)buffer;
TRACE("用户名=%s\n",newFriend->Name);
int nReceived=m_pSocket->Receive(newFriend,BUFFER_SIZE,0);
TRACE("用户名=%s\n",newFriend->Name);
MYFRIEND* newFriend =new MYFRIEND;
newFriend->Name="XXX";
int nReceived=m_pSocket->send(newFriend,BUFFER_SIZE);
MyMsg msgSend;
ZeroMemory(&msgRead,sizeof(msgRead));
int isend = 0;
while(isend<sizeof(msgSend))
{
int nCharSend=send(ClientSock,(char*)(&msgSend+isend),sizeof(msgSend)-isend,0);
isend+=nCharSend;
if (WSAGetLastError()==SOCKET_ERROR)
{
//发送数据错误
return FALSE;
}
}
return TRUE;接收数据:
MyMsg msgRead;
ZeroMemory(&msgRead,sizeof(msgRead));int irecv = 0;
while(irecv<sizeof(msgRead))
{
int nCharSend=recv(ClientSock,(char*)(&msgRead+irecv),sizeof(msgRead)-irecv,0);
irecv+=nCharSend;
if (WSAGetLastError()== SOCKET_ERROR)
{
//接收数据发生错误
return 0;
}
}
其中MyMsg是你的结构体名称。
放分吧,我已经回答了你的问题:)
发送数据
MyMsg msgSend;
//在这样里给你的结构成员赋值。
int isend = 0;
while(isend<sizeof(msgSend))
{
int nCharSend=send(ClientSock,(char*)(&msgSend+isend),sizeof(msgSend)-isend,0);
isend+=nCharSend;
if (WSAGetLastError()==SOCKET_ERROR)
{
//发送数据错误
return FALSE;
}
}
return TRUE;
{
char name[10];
char passwd[10];
}DEMOSTR;DEMOSTR demo;if(send(sockffd,(char *)&demo,sizeof(demo),0)==SOCKET_ERROR)
如果这样还不ok的话,就没道理了