Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

La multi ani @karax!

La multi ani @Yoda!

La multi ani @OvidiuNS!
 Castrarea cocosului (clapon)

Instalație ornamentala lumin...

probleme conectare wifi de pe tel...

Probleme cu alegerea facultatii
 Cont Facebook spart

Modul GSM cu numarator de impulsuri

Leduri de 12v la polițe de s...

Intrerupator bec
 Recomandari Colagen

Recomandari Ciocolata Neagra 70-85%

TVSat GO

Targuri de Craciun
 

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: 28,251
  • Î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: 28,251
  • Î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: 39,840
  • Î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: 39,840
  • Î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: 29,262
  • Î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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

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