如何接收服务端数据

ghost_028 2006-11-15 02:31:18
急需基于UDP方式接收数据的客户端例子,服务端已有
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghost_028 2006-11-15
  • 打赏
  • 举报
回复
编译当然没问题,接收数据失败,错误码10022
laolaoliu2002 2006-11-15
  • 打赏
  • 举报
回复
编译一下不就知道有没有问题了吗,呵呵
ghost_028 2006-11-15
  • 打赏
  • 举报
回复
客户端只需接收就可以了,大家看看我写的客户端代码有什么问题,多谢了:

DWORD WINAPI CAdapterAbilityQueryDlg::ReceiveT(void* pParam)
{

Client *pMyTest = NULL;
pMyTest = (Client*)pParam;

struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(9999); ///server的监听端口
server.sin_addr.s_addr=inet_addr("192.168.1.108"); ///server的地址

CS_BufferHead MsgHead;
char BufBody[MAX_CMD_BUFF];
//SOCKET socket1;
//socket1=socket(AF_INET,SOCK_DGRAM,0);
while (1)
{
//if (sendto(pMyTest->m_hUdpSocket,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
//{
if (recvfrom(pMyTest->m_hUdpSocket,
(char *)&BufBody,
sizeof(BufBody),
0,
(struct sockaddr*)&server,&len) == SOCKET_ERROR)
{
int lpdwFlags;

if((lpdwFlags=WSAGetLastError())==WSA_IO_PENDING)
{
AfxMessageBox("faild");//错误码为10022
}

}
else
AfxMessageBox("OK");
//}
}
closesocket(pMyTest->m_hUdpSocket);
return 0;

////////////////////////////////////
上面的pMyTest->m_hUdpSocket已经初始化了代码如下:
//初始化UDP
m_hUdpSocket = WSASocket(AF_INET, SOCK_DGRAM,IPPROTO_UDP,NULL,0,WSA_FLAG_OVERLAPPED);//WSA_FLAG_OVERLAPPED);
if (m_hUdpSocket == INVALID_SOCKET)
{
WriteDebugLog("创建套节字失败!");
return FALSE;
}
laolaoliu2002 2006-11-15
  • 打赏
  • 举报
回复
server端: open a socket(socket)--->name the socket(bind)--->send and receive data(sendto recvfrom)--->close socket(closesocket)
client端: open a socket(socket)---------------------------->send and receive data(sendto recvfrom)--->close socket(closesocket)

  server端无需listen,client端无需connect,因此udp中server和client的区别相对较模糊。只要调用sendto和recvfrom就可以给指定的地址收发数据,但并不保证收发的数据的完整性和可靠性。
udpcilent主要代码: void main()
{
SOCKET socket1;

InitWinsock();
struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(1000); ///server的监听端口
server.sin_addr.s_addr=inet_addr("168.168.0.10"); ///server的地址

socket1=socket(AF_INET,SOCK_DGRAM,0);
while (1)
{
char buffer[1024]="\0";
printf("input message\n");
scanf("%s",buffer);
if (strcmp(buffer,"bye")==0)
break;
if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
{
if (recvfrom(socket1,
buffer,
sizeof buffer,
0,
(struct sockaddr*)&server,&len) != SOCKET_ERROR)
printf("rece from server:%s\n",buffer);
}
}
closesocket(socket1);
}
laolaoliu2002 2006-11-15
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1284 用udp协议通讯示例
http://www.vckbase.com/document/viewdoc/?id=1281 UDP轻松应用
laolaoliu2002 2006-11-15
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/listdoc.asp?mclsid=9

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧