上位机用udp和单片机连接 的问题

快乐渔夫 2013-11-21 12:18:45
我编了个小程序,上位机用UDP和采集卡的网口通信,但是怎么老是有错误,采集卡的dsp控制网口芯片和上位机联系,采集卡这边是好的用别程序可以用,采集卡的IP地址是:“192.168.1.11”端口是5000,上位机的IP是“192.168.1.5”我用了一个MYcoshet类但是老出现错误。
BOOL CRadarDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.
////////////////////////////////////////////////////////////////////////
pSocket = new CMySocket();
pSocket->sockAddr.sin_family = AF_INET;
pSocket->sockAddr.sin_addr.s_addr = inet_addr("192.168.1.11");
pSocket->sockAddr.sin_port = htons(5000);
if(!pSocket->Create(0))
{
::AfxMessageBox("网络初始化失败!");
}
pSocketIPX = new CMySocket();
pSocketIPX->IPXsockAddr.sa_family = AF_IPX;
pSocketIPX->IPXsockAddr.sa_netnum[0] = (char)0x00;
pSocketIPX->IPXsockAddr.sa_netnum[1] = (char)0x00;
pSocketIPX->IPXsockAddr.sa_netnum[2] = (char)0x00;
pSocketIPX->IPXsockAddr.sa_netnum[3] = (char)0x00;
pSocketIPX->IPXsockAddr.sa_nodenum[0] = (char)0xff;
pSocketIPX->IPXsockAddr.sa_nodenum[1] = (char)0xff;
pSocketIPX->IPXsockAddr.sa_nodenum[2] = (char)0xff;
pSocketIPX->IPXsockAddr.sa_nodenum[3] = (char)0xff;
pSocketIPX->IPXsockAddr.sa_nodenum[4] = (char)0xff;
pSocketIPX->IPXsockAddr.sa_nodenum[5] = (char)0xff;
pSocketIPX->IPXsockAddr.sa_socket = (unsigned short)0x4545;
if(!pSocketIPX->Create(1))
{
::AfxMessageBox("请安装IPX协议");
}
pSocket->CloseSock();//关闭套接字
pSocketIPX->CloseSock();//关闭

我用的MYSCOKET类

/////////////////////////////////////////////////////////////////////////////
// CMySocket member functions

BOOL CMySocket::Socket(int flg, int nSocketType, int nProtocolType, int nAddressFormat)
{
if(flg)
{
nProtocolType = NSPROTO_IPX;
nAddressFormat = AF_IPX;
}
m_hSocket = socket(nAddressFormat,nSocketType,nProtocolType);
if(m_hSocket==INVALID_SOCKET)
return FALSE;
if(flg)
{
// bind(m_hSocket,(PSOCKADDR)&sockAddr,sizeof(sockAddr));
BOOL fBroadcast = TRUE;
int err = setsockopt (m_hSocket, SOL_SOCKET,SO_BROADCAST,(CHAR *) &fBroadcast,sizeof(int));
}
return TRUE;
}

BOOL CMySocket::Create(int flg)
{
if(Socket(flg))
return TRUE;
else
return FALSE;
}

void CMySocket::SendData(BYTE lpBuf[], int nBufLen,BOOL IPXFlg)
{
if(!IPXFlg)
SendTo(lpBuf,nBufLen,(SOCKADDR *)&sockAddr,sizeof(sockAddr));
else
SendTo(lpBuf,nBufLen,(SOCKADDR *)&IPXsockAddr,sizeof(SOCKADDR_IPX));
}

void CMySocket::CloseSock()
{
closesocket(m_hSocket);
WSACleanup();
}

程序运行没有错误,但是“网络初始化失败”和“请安装IPX协议”,硬件连接好了,也安装了IPX,还请各位大侠帮助。谢谢了
...全文
259 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdg3707 2013-11-21
  • 打赏
  • 举报
回复
没用过这个类,不过最好你还是从网上查一下如何编UDP的代码,网上应该有现成的代码,自己编有问题好查原因,用现成的类一旦有问题不好确定原因甚至不有修改
cchvsgame 2013-11-21
  • 打赏
  • 举报
回复
没有调用 sock初始始,请调用afxsocketinit()

18,356

社区成员

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

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