Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Succesiune notar versus instanta ...

Montaj aer conditionat in balcon ...

joc idem Half Life gratis

PC game stream catre Nvidia Shiel...
 Pompa de apa HEPU ?!

Vreau o masina electrica de tocat...

Cum ajunge remorca de tir inapoi ...

Alt "Utilizator nou" pe T...
 ULBS INFORMATICA

Index preturi

Boxa membrana tweeter infundata

Am nevoie de poze cu un curcubeu
 Whisky for Mac

Xiaomi 14 Gpay

Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3
 

VB6 si c++

- - - - -
  • Please log in to reply
8 replies to this topic

#1
csganja

csganja

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 28.01.2011
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?

#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,427
  • Înscris: 10.08.2005
da este posibil

#3
csganja

csganja

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 28.01.2011
Este posibil la modul "cateva functii si gata" sau "ai de scris 96239 linii"?

#4
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,427
  • Înscris: 10.08.2005
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
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003
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
csganja

csganja

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 28.01.2011
@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
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003

View Postcsganja, on 09 noiembrie 2012 - 11:02, said:

Tot ce am gasit legat de udp si vb6 au acel bug (error: 10054)
E cunoscuta povestea.
Pe de alta parte nu stiu ce mai stai pe acest VB ! E mort demult si probabil stii asta.

#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
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
csganja

csganja

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 28.01.2011
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate