作者timohu ( )
看板Visual_Basic
标题[VB6 ] PC与WiFi module之间的通讯疑问
时间Wed Jul 11 09:49:03 2012
我目前接手了一个与WiFi module间通讯的GUI,是用BCB开发的,
但是由於我对BCB比较不熟,想要用VB仿照重新开发一个新的,
现在遇到的问题是在通讯部分,原有BCB是用api的方式来进行网路通讯,
(WSAStartup, WSAData,.......)
那我在VB这边,用winsock用办法做到相同功能吗?
我有大概找了一下网路资源,也有提到VB有关WSAStartup这部份的Function
但是好像都没有完整的相关应用可以参考,有前辈可以指点一下该去哪边找资料吗?
谢谢
(原有BCB source code)
// Initialize Winsock.
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
{
Application->MessageBox(L"Error at WSAStartup()", L"WiFi GUI", 16+0);
}
ConnectSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( ConnectSocket == INVALID_SOCKET )
{
wsprintf(w, "Error at socket(): %ld\n", WSAGetLastError() );
Application->MessageBox(w, "WiFi GUI", 16+0);
WSACleanup();
return;
}
int flag = 1;
i = setsockopt(ConnectSocket, IPPROTO_TCP, TCP_NODELAY, (char *) &flag,
sizeof(int));
// 设置服务端的通信协议、IP地址、端口
clientService.sin_family = AF_INET;
wsprintf(w,"%s",Edit4->Text);
clientService.sin_addr.s_addr = inet_addr(w);
i= Edit2->Text.ToInt();
clientService.sin_port = htons( i );
// 连接到服务端
if (connect(ConnectSocket,(SOCKADDR*) &clientService,sizeof(clientService) )
== SOCKET_ERROR)
{
wsprintf(w,"Failed to connect(%d)\n",WSAGetLastError() );
Application->MessageBox(w, "WiFi GUI", 16+0);
LinkFlag=false;
closesocket(ConnectSocket);
Sleep(50);
WSACleanup();
return;
}
LinkFlag=true;
//传送资料部分 (传送7个byte的资料,并等待接收6 byte的response)
int bytesSent = send( ConnectSocket,Command,7,0 );
ReceiveCnt=6;
if(bytesSent == SOCKET_ERROR)
{
wsprintf(w,"send error (%d)\n", WSAGetLastError());
Application->MessageBox(w, "WiFi GUI", 16+0);
closesocket(ConnectSocket);
Sleep(50);
return;
}
}
WaitResponse();
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.183.130