VB6 si c++
Last Updated: Nov 10 2012 00:19, Started by
csganja
, Nov 09 2012 10:32
·
0
#1
Posted 09 November 2012 - 10:32
Vreau si eu sa stiu daca e posibil sa scriu un dll in c++ apoi sa il pot folosi in vb6.
Ideea este in felul urmator, vb6 are un bug la winsock (mswinsck.ocx), dupa ce primeste date (udp) prima oara merge, apoi a doua oara crapa. Asta se intampla cand trimit datele dintrun script php (cand trimit tot din vb merge perfect). In c++ nu am aceasta problema, doar ca nu sunt prea familiarizat cu el. As vrea sa stiu daca este posibil sa scriu in c++ cateva functii, bind (ip, port) , get_data si send_data(string), care sa le pot folosi in vb6. Pana acum am: udp_sockets.dll (c++) // includes ---------------------------------------- #include "stdafx.h" #include <winsock2.h> #include <string> #include <iostream> using namespace std; #pragma comment(lib,"ws2_32.lib") //Winsock Library BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } SOCKET udp_socket; struct sockaddr_in peer; int _stdcall skbind(int port) { WSADATA ws; WSAStartup(0x0101,&ws); peer.sin_family = AF_INET; peer.sin_port = htons(port); peer.sin_addr.s_addr = htonl(INADDR_ANY); udp_socket = socket(AF_INET, SOCK_DGRAM, 0); bind(udp_socket,(struct sockaddr *)&peer,sizeof(peer)); return 1; } char * _stdcall get_data() { int peerlen = sizeof(peer); static char recvbuffer[256]; int retval; while (1){ retval = recvfrom(udp_socket, recvbuffer, sizeof(recvbuffer), 0, (struct sockaddr *)&peer, &peerlen); if(retval != -1){ return recvbuffer; } } } void _stdcall send_data(char* data, int size){ sendto(udp_socket, data, size, 0, (struct sockaddr *)&peer, sizeof(peer)); } Vb6: Private Declare Function skbind Lib "sockets.dll" (ByVal port As Integer) As Integer Private Declare Function get_data Lib "sockets.dll" () As String Private Declare Function send_data Lib "sockets.dll" (ByVal data As String) Private Sub Form_Load() Call skbind(27010) call get_data Call send_data("\xFF\xFF\xFF\xFF\x66\x0A\x7F\x00\x00\x01\x69\x87\x01\x00\x00\x00\x00\x00") End Sub Ceva sugestii? Sau un alt dll care poate fi folosit in cazut de fata? |
#3
Posted 09 November 2012 - 10:40
Este posibil la modul "cateva functii si gata" sau "ai de scris 96239 linii"?
|
#4
Posted 09 November 2012 - 10:51
depinde de ce functii vrei sa scrii
eu am spus ca este posibil sa faci o librarie in C/C++ si sa ii folosesti functiile apeland din VB. cat mult ai de scris depinde de ce vrei sa faci acum este evindent ca nu stii prea multe programare caz in care banul jos la http://forum.softped...ware-la-cerere/ |
#5
Posted 09 November 2012 - 10:54
In codul de mai sus nu vad exportul functiilor si e necesar sa poti folosi .dll-ul.
Pe de alta parte toate functiile WinAPI pot fi folosite direct in VB daca nu stii C. Edited by neagu_laurentiu, 09 November 2012 - 10:55. |
#6
Posted 09 November 2012 - 11:02
@marian
Vreau sa invat, nu fac ceva pentru profit. Fac pentru mine, deci nu as plati pe cineva pentru asta. @neagu udp_sockets.def EXPORTS skbind; get_data; send_data; Tot ce am gasit legat de udp si vb6 au acel bug (error: 10054) |
#7
Posted 09 November 2012 - 11:07
csganja, on 09 noiembrie 2012 - 11:02, said:
Tot ce am gasit legat de udp si vb6 au acel bug (error: 10054) Pe de alta parte nu stiu ce mai stai pe acest VB ! E mort demult si probabil stii asta. |
#8
Posted 09 November 2012 - 18:45
Corect, poti folosi direct din VB functiile din WinAPI ... sau gasesti pe net o gramada de librarii 3rd party de socketuri pentru VB ... sau (cel mai indicat), treci la VB.NET
|
#9
Posted 10 November 2012 - 00:19
LE: am reusit in vb .net
Multumesc de raspunsuri. Numa' bine. Edited by csganja, 10 November 2012 - 00:45. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users