Solved

2-in-1 problem: Stream access and access violation

Posted on 2000-04-11
9
290 Views
Last Modified: 2010-04-04
Hi!

I'm trying to write a HTTP tunnel. My idea is to let a browser connect to a blocking serversocket, and administrate all data from the browser to the host in the thread, that is beeing spawned.

In the thread, I create a new TThread. This thread will then manage all responses from the proxy/HTTP server back to the browser.

(1)
In the TServerClientThread I create a new blocking socket (to connect to the HTTP/proxy server), but sometimes i get an access violation the setting Active:=True. Why?

Error is: Project nnnn raised exception class EAccessViolation with message 'Access Violation at address C000013C. Read of address C000013C'. ...

I also get '... 'Access Violation at address 00000000. Read of address 00000000'. ...

(2)
In the TServerClientThread I also create two WinSocketStream. One is beeing read from the TServerClientThread (HTTP requests) and written from the TThread (Answers from the HTTP/proxy server), and the other Stream works the otherway around.

Is this ok to do, without making any kind of mutual exclution? If not - how should this be done?
(I have not had any errors so far, but ...)

Hope to hear from you soon guys!

Peter

BTW: If anybody has some Delphi sourcecode for a network tunnel, I would really appreciate it.
0
Comment
Question by:jpvj
9 Comments
 
LVL 12

Expert Comment

by:rwilson032697
ID: 2706126
As for Q1: Most likely the object has not been created, or it has been freed...

Cheers,

Raymond.
0
 
LVL 4

Accepted Solution

by:
jeurk earned 50 total points
ID: 2707036
Hello,
I suggest you take a look at the winshoes components.
They have the components you need :
tunnel master, and tunnel slave. they
is also a demo that show how to use things.
Get them on http://www.pbe.com/Winshoes
it's free and open source...

Let me know, if they is a problem...

-Jk
0
 
LVL 2

Expert Comment

by:PeterLarsen
ID: 2707150
I have done something similar to what you want, but i found it was easier to use NonBlocking.
Regarding Q1 : I'm using TServerSocket (NonBlocking) and i remember that some "socket.close" commands actually close all open treads. Maybe something similar happen in your program.

Good luck
Peter
0
 

Author Comment

by:jpvj
ID: 2709154
To Jeurk:

Hi again!

The Winshoes package looks very impressing, except for the (lack of) documentation!

Could you please explain, how the tunnel demo works?

Thanks in advance!

Peter
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 5

Expert Comment

by:Gwena
ID: 2709218
listening :-)
0
 
LVL 4

Expert Comment

by:jeurk
ID: 2710981
Hello,
Where is a lack documentation ? ;)
ok. I agree.
This so well written that you don't need documentation.
You was trying to do some tunneling stuff, so you should understand what is going on ? no ?
To make the demo work : launch the server...
he will start to listen on host 127.0.0.1 port 21.

After that, start a client, change th ip to 127.0.0.1, start it. The serveur will show you a connexion.
You cannot start more then on client on the same machine.

This how to do it the hard way. If you look at the components, you will see that they is a TMasterTunnel and a TSlaveTunnel.
They encapsulate all the fonctions you need...
0
 

Author Comment

by:jpvj
ID: 2791628
Hi Again!

Sorry for the long delay, but ... :-)

If have use the WinshoeMappedPort instead, and it work fine!

Thanks for your help!

Peter
0
 

Author Comment

by:jpvj
ID: 2883516
Comment accepted as answer
0
 
LVL 4

Expert Comment

by:jeurk
ID: 2890257
Glad I could help.
CU
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Delphi OLE Error 8 95
Help on project with Soap 10 48
creating threads in delphi 1 82
SUM 2 INTEGER ARRAYS INTO 1 10 93
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

896 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now