各位大哥,我现在是初搞这个网络通信,本来不想搞,但实在是没有办法。救我。
情况如下:
我是想搞个通信,(初想用UDP)功能就是客户端的用户上下线保存。
是个STRUCT struct CliSer
{
int SendCase;
char User[6];
char Buff[1024];
} ;
CliSer *p,Cliser_App;//
strcpy(Cliser_App.User,user_id.GetBuffer(5));
p=&Cliser_App;
m_pSocetCli=new CSocetCli();
m_pSocetCli->Create(560,SOCK_DGRAM);
m_pSocetCli->SendTo(p,sizeof(Cliser_App),560,"127.0.0.1");
m_pSocetCli->Close();
情况如下:
我是想搞个通信,(初想用UDP)功能就是客户端的用户上下线保存。
是个STRUCT struct CliSer
{
int SendCase;
char User[6];
char Buff[1024];
} ;
CliSer *p,Cliser_App;//
strcpy(Cliser_App.User,user_id.GetBuffer(5));
p=&Cliser_App;
m_pSocetCli=new CSocetCli();
m_pSocetCli->Create(560,SOCK_DGRAM);
m_pSocetCli->SendTo(p,sizeof(Cliser_App),560,"127.0.0.1");
m_pSocetCli->Close();
解决方案 »
- 如何写一个相应函数能让MFC对话框程序重启?
- 我有一个头文件userFun
- 谁能发给我一个COM编程的实例,有服务器和客户机的代码,在VC6下编译无问题?(我以200分求,话无戏言)
- 请教工程向导中生成ATL工程时, Exe和Service和DLL有什么区别!
- 如何才能得到SDI 的主窗口的CWnd* 指针
- 如何截获鼠标滚轮滚动消息?
- 交换机的问题。
- 如何定义象DECLARE_SERIAL(ClassName)一样的可以自动展开的宏?300分
- VC5。0下的com程序在vc6下老出现下面的错误,咋回事?
- 谁给我几个可上传软件的网站地址
- 如何取得网页某一处动态变化的值。满分求助。
- 请各位兄弟姐妹帮忙,小弟在此不胜感激。
m_pSockSer=new CSockSer(); //m_pSockSer是CAsyncSocket继承下来的。
m_pSockSer->Create(560,SOCK_DGRAM);
但是为什么就是接不到消息呢?
其它内容:一、我已经初始化。if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
二、已经添加#include <afxsock.h> // MFC socket extensionss
返回的值为-1喔。怎么办呀。快帮我呀。
我现在问题是:用ReceiveFrom接收不到IP地址与端口呀。IP为空,端口为空。是怎么回事呢?
现在都郁闷死了。
void CSockSer::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
char buff[1024];
CString IPAddr;
UINT cPort;
int lpcLen=30;
ret=ReceiveFrom(buff,1024,IPAddr,cPort);
if(ret==ERROR)
{
AfxMessageBox(_T("网络建立失改:\n"+WSAGetLastError()),MB_ICONEXCLAMATION);
}
else
{
((CUserList *)m_pDlg)->ShowUser(buff,IPAddr,cPort);
}
CAsyncSocket::OnReceive(nErrorCode);
}
GetLastError看看错误码。
GetLastError()为10040,这个是什么错误的呢?
快帮帮我呀。
struct CliSer
{
int SendCase;
char User[6];
char HostName[50];
char Buff[1024];
} ;
应该怎么操作呢?
ReceiveFrom(buff,1024,IPAddr,cPort); 中的。1024应该改成多大呢?
这都已经是1024,你的buff最少要 4+6+50+1024那么大哦,这是单字节对齐的情况下。把buff设大点嘛,大点没事的,不把堆栈溢出就行了。
我当然不会这样。我是指出我的发送过的内容。
ReceiveFrom(buff,1024,IPAddr,cPort);
我现在把buff改成2048,1024也改成2048,就已经可以的。我现在是要把这个结构体的大小算出来,然后再改成相同的大小就好了。