上位机用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,还请各位大侠帮助。谢谢了