我目前接手了一個與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