Solved

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

Posted on 2000-04-11
9
291 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
Is Your AD Toolbox Looking More Like a Toybox?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

 

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
 
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

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

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

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

810 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