看板 Visual_Basic 關於我們 聯絡資訊
我目前接手了一個與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