473,606 Members | 2,101 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Socket.Receive blocks sometimes on localhost

I have a Windows Service application that acts as if it's an SMTP server.
Outlook connects to this service, which is always running on the localhost.
This works fine most of the time.
However, sometimes it will no longer receive anything from Outlook.
Socket.Receive would block indefinitely (actually, Socket.Poll times out,
because that's what I'm using). Outlook sends it, because when I'm stepping
through the code with the debugger, everything works.

Although this happens rarely, there is one situation where this always
happens: when Outlook has more than one message to send in a single
send/receive action, it will always block after the second MAIL command. An
example SMTP transcript:
220 localhost welcomes you to SignalMailSMTP
EHLO qualityweb
250 OK
MAIL FROM: <se****@signalm ailsmtp.com>
250 Mail from se****@signalma ilsmtp.com accepted
RCPT TO: <re******@signa lmailsmtp.com>
250 Recipient re******@signal mailsmtp.com accepted
DATA
354 Start mail input; end with <CRLF>.<CRLF>
From: "SignalMail " <se****@signalm ailsmtp.com>
To: <re******@signa lmailsmtp.com>
Subject: AEX Enter Long alert
Date: Sat, 27 Sep 2003 14:03:28 +0200
Message-ID: <000701c384ef$5 d1ae640$9dfc385 0@qualityweb>
MIME-Version: 1.0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.4510
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Importance: Normal

..
250 OK
MAIL FROM: <se****@signalm ailsmtp.com>
250 Mail from se****@signalma ilsmtp.com accepted

The RCPT is never received. This has been reproduced on three separate
computers. Also, if you (or Outlook itself) retry too fast after this
failure, it will again fail, again at the RCPT command.

Now I can solve this by adding a delay (Thread.Sleep) but that's a highly
undesirable solution, as the exact delay value to make it work probably
depends on the speed of the computer it's running on. Also, it's a bit of a
hack.

Now I'm fresh out of ideas. It seems the message gets lost on the localhost
interface, but the question is, what can I do about it?
The code I'm using to receive:
Do
If mConnected.Poll (5000000, SelectMode.Sele ctRead) Then
BytesReceived = mConnected.Rece ive(Buffer)
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else
mLogTransscript .Append("A timeout has occurred.")
mLogTransscript .Append(Environ ment.NewLine)
If Not mTransscript Is Nothing Then
mTransscript.Wr iteLine("A timeout has occurred.")
End If
mLogError = True
mState = SmtpState.Quit
Return Nothing
End If
Loop While Message.IndexOf (endSequence) = -1

Hopefully someone here can help.

--
Sven Groot

Jul 21 '05 #1
12 3820
Have you tried Thread.Sleep(0) ? That way you don't have to calculate the
exact time to sleep for different machines.

"Sven Groot" <sv*******@gmx. net> wrote in message
news:#P******** ******@TK2MSFTN GP11.phx.gbl...
I have a Windows Service application that acts as if it's an SMTP server.
Outlook connects to this service, which is always running on the localhost. This works fine most of the time.
However, sometimes it will no longer receive anything from Outlook.
Socket.Receive would block indefinitely (actually, Socket.Poll times out,
because that's what I'm using). Outlook sends it, because when I'm stepping through the code with the debugger, everything works.

Although this happens rarely, there is one situation where this always
happens: when Outlook has more than one message to send in a single
send/receive action, it will always block after the second MAIL command. An example SMTP transcript:
220 localhost welcomes you to SignalMailSMTP
EHLO qualityweb
250 OK
MAIL FROM: <se****@signalm ailsmtp.com>
250 Mail from se****@signalma ilsmtp.com accepted
RCPT TO: <re******@signa lmailsmtp.com>
250 Recipient re******@signal mailsmtp.com accepted
DATA
354 Start mail input; end with <CRLF>.<CRLF>
From: "SignalMail " <se****@signalm ailsmtp.com>
To: <re******@signa lmailsmtp.com>
Subject: AEX Enter Long alert
Date: Sat, 27 Sep 2003 14:03:28 +0200
Message-ID: <000701c384ef$5 d1ae640$9dfc385 0@qualityweb>
MIME-Version: 1.0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.4510
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Importance: Normal

.
250 OK
MAIL FROM: <se****@signalm ailsmtp.com>
250 Mail from se****@signalma ilsmtp.com accepted

The RCPT is never received. This has been reproduced on three separate
computers. Also, if you (or Outlook itself) retry too fast after this
failure, it will again fail, again at the RCPT command.

Now I can solve this by adding a delay (Thread.Sleep) but that's a highly
undesirable solution, as the exact delay value to make it work probably
depends on the speed of the computer it's running on. Also, it's a bit of a hack.

Now I'm fresh out of ideas. It seems the message gets lost on the localhost interface, but the question is, what can I do about it?
The code I'm using to receive:
Do
If mConnected.Poll (5000000, SelectMode.Sele ctRead) Then
BytesReceived = mConnected.Rece ive(Buffer)
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else
mLogTransscript .Append("A timeout has occurred.")
mLogTransscript .Append(Environ ment.NewLine)
If Not mTransscript Is Nothing Then
mTransscript.Wr iteLine("A timeout has occurred.")
End If
mLogError = True
mState = SmtpState.Quit
Return Nothing
End If
Loop While Message.IndexOf (endSequence) = -1

Hopefully someone here can help.

--
Sven Groot

Jul 21 '05 #2
Hi,

Suggestions:
1)don't store message to string, stote it as byte[] in to MemoryStream.

2) Loop While Message.IndexOf (endSequence) = -1, if message gets
bigger(contains attachment) this code kill your computer.
Store only last 5 bytes (<CRLF>.<CRLF>) , which can be used to check for data
terminator.

3) put in while loop Thread.Sleep(50 ) or other wise this code eats 100% of
your cpu.
(Sleep only if data not available to read)

4) Use Socket.Availabl e to see if data must be readed or just wait to arrive
(Thread.Sleep(5 0) )
For complete solution see www.lumisoft.ee mail server project.
It provides SMTP/POP3/IMAP working server code.

This code is easy to follow, it's well commented, but it's in c#.

I'm sure you can find many good solutions,ideas from there or even may use
whole project.
(There isn't any need to invent bicycle, because of it already exists)

If you have some SMTP specific questions, you may email iv**@lumisoft.e e.
"Sven Groot" <sv*******@gmx. net> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
I have a Windows Service application that acts as if it's an SMTP server.
Outlook connects to this service, which is always running on the localhost. This works fine most of the time.
However, sometimes it will no longer receive anything from Outlook.
Socket.Receive would block indefinitely (actually, Socket.Poll times out,
because that's what I'm using). Outlook sends it, because when I'm stepping through the code with the debugger, everything works.

Although this happens rarely, there is one situation where this always
happens: when Outlook has more than one message to send in a single
send/receive action, it will always block after the second MAIL command. An example SMTP transcript:
220 localhost welcomes you to SignalMailSMTP
EHLO qualityweb
250 OK
MAIL FROM: <se****@signalm ailsmtp.com>
250 Mail from se****@signalma ilsmtp.com accepted
RCPT TO: <re******@signa lmailsmtp.com>
250 Recipient re******@signal mailsmtp.com accepted
DATA
354 Start mail input; end with <CRLF>.<CRLF>
From: "SignalMail " <se****@signalm ailsmtp.com>
To: <re******@signa lmailsmtp.com>
Subject: AEX Enter Long alert
Date: Sat, 27 Sep 2003 14:03:28 +0200
Message-ID: <000701c384ef$5 d1ae640$9dfc385 0@qualityweb>
MIME-Version: 1.0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.4510
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Importance: Normal

.
250 OK
MAIL FROM: <se****@signalm ailsmtp.com>
250 Mail from se****@signalma ilsmtp.com accepted

The RCPT is never received. This has been reproduced on three separate
computers. Also, if you (or Outlook itself) retry too fast after this
failure, it will again fail, again at the RCPT command.

Now I can solve this by adding a delay (Thread.Sleep) but that's a highly
undesirable solution, as the exact delay value to make it work probably
depends on the speed of the computer it's running on. Also, it's a bit of a hack.

Now I'm fresh out of ideas. It seems the message gets lost on the localhost interface, but the question is, what can I do about it?
The code I'm using to receive:
Do
If mConnected.Poll (5000000, SelectMode.Sele ctRead) Then
BytesReceived = mConnected.Rece ive(Buffer)
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else
mLogTransscript .Append("A timeout has occurred.")
mLogTransscript .Append(Environ ment.NewLine)
If Not mTransscript Is Nothing Then
mTransscript.Wr iteLine("A timeout has occurred.")
End If
mLogError = True
mState = SmtpState.Quit
Return Nothing
End If
Loop While Message.IndexOf (endSequence) = -1

Hopefully someone here can help.

--
Sven Groot

Jul 21 '05 #3
"Sven Groot" <sv*******@gmx. net> wrote
If mConnected.Poll (5000000, SelectMode.Sele ctRead) Then
BytesReceived = mConnected.Rece ive(Buffer)
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else


Why do you use Poll with such a huge number? You can better call Receive
directly without using Poll. Receive will block until data is available.

BytesReceived = mConnected.Rece ive(Buffer)
If Buffer > 0 Then
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else
' other side closed connection, or timeout
End If

I also agree with Ivar about the checking of only the last few bytes instead
of using IndexOf on the entire message.
You may also want to consider using a StringBuilder instance instead of
concatenating strings. This will greatly enhance the performance.

Regards,
Pieter Philippaerts
Managed SSL/TLS: http://www.mentalis.org/go.php?sl
Jul 21 '05 #4
Hi,
This code won't work. It's allowed that there isn't always data
available(you must wait to recieve it).

BytesReceived = mConnected.Rece ive(Buffer)
If Buffer > 0 Then
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else
' other side closed connection, or timeout
End If

You may also want to consider using a StringBuilder instance instead of
concatenating strings Playing with big strings isn't good idea if that's not needed, using raw
byte data gives multiple times faster result and
there isn't any afraid of messing conent with Encoding conversation.

"Pieter Philippaerts" <Pi****@nospam. mentalis.org> wrote in message
news:es******** ******@tk2msftn gp13.phx.gbl... "Sven Groot" <sv*******@gmx. net> wrote
If mConnected.Poll (5000000, SelectMode.Sele ctRead) Then
BytesReceived = mConnected.Rece ive(Buffer)
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived) Else
Why do you use Poll with such a huge number? You can better call Receive
directly without using Poll. Receive will block until data is available.

BytesReceived = mConnected.Rece ive(Buffer)
If Buffer > 0 Then
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else
' other side closed connection, or timeout
End If

I also agree with Ivar about the checking of only the last few bytes

instead of using IndexOf on the entire message.
You may also want to consider using a StringBuilder instance instead of
concatenating strings. This will greatly enhance the performance.

Regards,
Pieter Philippaerts
Managed SSL/TLS: http://www.mentalis.org/go.php?sl

Jul 21 '05 #5

I see you have SSL/TLS and now it's free, will it stay free and is it usable
for SMTP,POP3(TLS).

"Pieter Philippaerts" <Pi****@nospam. mentalis.org> wrote in message
news:es******** ******@tk2msftn gp13.phx.gbl...
"Sven Groot" <sv*******@gmx. net> wrote
If mConnected.Poll (5000000, SelectMode.Sele ctRead) Then
BytesReceived = mConnected.Rece ive(Buffer)
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived) Else
Why do you use Poll with such a huge number? You can better call Receive
directly without using Poll. Receive will block until data is available.

BytesReceived = mConnected.Rece ive(Buffer)
If Buffer > 0 Then
Message &= Text.Encoding.A SCII.GetString( Buffer, 0, BytesReceived)
Else
' other side closed connection, or timeout
End If

I also agree with Ivar about the checking of only the last few bytes

instead of using IndexOf on the entire message.
You may also want to consider using a StringBuilder instance instead of
concatenating strings. This will greatly enhance the performance.

Regards,
Pieter Philippaerts
Managed SSL/TLS: http://www.mentalis.org/go.php?sl

Jul 21 '05 #6
Ivar wrote:
Hi,

Suggestions:
1)don't store message to string, stote it as byte[] in to
MemoryStream.
I need it as a string. I'm not writing a real SMTP server. I'm writing
something that only deals with a *very* small amount of possible messages. I
do no forwarding, no actual mail delivery. The subject is parsed out of the
message and used for entirely different purposes. The only client that will
ever use this server is Microsoft Outlook 2000.
2) Loop While Message.IndexOf (endSequence) = -1, if message gets
bigger(contains attachment) this code kill your computer.
Store only last 5 bytes (<CRLF>.<CRLF>) , which can be used to check
for data terminator.
The messages will *never* be bigger than one line of plain text body.
3) put in while loop Thread.Sleep(50 ) or other wise this code eats
100% of your cpu.
(Sleep only if data not available to read)
I don't see why, it doesn't go through the loop if there's no data.
4) Use Socket.Availabl e to see if data must be readed or just wait to
arrive (Thread.Sleep(5 0) )
That might be a good idea. I'll try to replace Poll with a check on
Available, see if it works.
For complete solution see www.lumisoft.ee mail server project.
It provides SMTP/POP3/IMAP working server code.


It seems you misunderstood my intentions somewhat, but your advice is
appreciated. I'm not writing an actual SMTP server. What we want to do is
quite different, but the application that generates the alerts I'm trying to
catch can only send mail using MAPI, which is why I have a 'fake' SMTP
server to catch these alerts. Outlook isn't used for anything else so this
is the only mail the system has to contend with. I also agree I need to work
on performance a bit, although there's only two computers on the planet this
will ever run on, I know exactly how fast they are, and I know exactly how
frequent this code will be called.

--
Sven Groot

Jul 21 '05 #7
I don't see why, it doesn't go through the loop if there's no data. Data income aren't always continuous.

For example allowed(happes in real life very usually) of while loop

data_part
data_part
data_part

no data (Socket.Avaliab le=0, must sleep there)
no data (Socket.Avaliab le=0, must sleep there)
no data (Socket.Avaliab le=0, must sleep there)

data_part

no data (Socket.Avaliab le=0, must sleep there)

You must read while data terminator or time out !!!
That is very usual that there isn't 0.5 sec data available and your while
loops x times of max CPU.


"Sven Groot" <sv*******@gmx. net> wrote in message
news:ed******** ********@TK2MSF TNGP12.phx.gbl. .. Ivar wrote:
Hi,

Suggestions:
1)don't store message to string, stote it as byte[] in to
MemoryStream.
I need it as a string. I'm not writing a real SMTP server. I'm writing
something that only deals with a *very* small amount of possible messages.

I do no forwarding, no actual mail delivery. The subject is parsed out of the message and used for entirely different purposes. The only client that will ever use this server is Microsoft Outlook 2000.
2) Loop While Message.IndexOf (endSequence) = -1, if message gets
bigger(contains attachment) this code kill your computer.
Store only last 5 bytes (<CRLF>.<CRLF>) , which can be used to check
for data terminator.
The messages will *never* be bigger than one line of plain text body.
3) put in while loop Thread.Sleep(50 ) or other wise this code eats
100% of your cpu.
(Sleep only if data not available to read)


I don't see why, it doesn't go through the loop if there's no data.
4) Use Socket.Availabl e to see if data must be readed or just wait to
arrive (Thread.Sleep(5 0) )


That might be a good idea. I'll try to replace Poll with a check on
Available, see if it works.
For complete solution see www.lumisoft.ee mail server project.
It provides SMTP/POP3/IMAP working server code.


It seems you misunderstood my intentions somewhat, but your advice is
appreciated. I'm not writing an actual SMTP server. What we want to do is
quite different, but the application that generates the alerts I'm trying

to catch can only send mail using MAPI, which is why I have a 'fake' SMTP
server to catch these alerts. Outlook isn't used for anything else so this
is the only mail the system has to contend with. I also agree I need to work on performance a bit, although there's only two computers on the planet this will ever run on, I know exactly how fast they are, and I know exactly how
frequent this code will be called.

--
Sven Groot

Jul 21 '05 #8
Ivar wrote:
I don't see why, it doesn't go through the loop if there's no data.

Data income aren't always continuous.


I know that, and what you say is definitely true when using Available, but
not necessarily when using Poll (because it does the sleeping for you).

Anyway, using Available instead of Poll solved my original problem, so
thanks!

--
Sven Groot

Jul 21 '05 #9
"Ivar" <iv**@lumisoft. ee> wrote in message
This code won't work. It's allowed that there isn't always data
available(you must wait to recieve it).
That is not true. This is from the .NET documentation: "The Blocking
determines the behavior of this method when no incoming data is available.
When false, a SocketException is thrown. When true, this method blocks and
waits for data to arrive." Note that "true" is the default value for the
Blocking property, so my code works perfectly. [And if you still don't
believe it, try it yourself :-)]
Playing with big strings isn't good idea if that's not needed, using raw
byte data gives multiple times faster result and
there isn't any afraid of messing conent with Encoding conversation.


As Sven mentioned, the server isn't going to be used for large emails and
working with strings in this case is much more straightforward . Also note
that the speed of the ASCII encoding class is quite good, so it shouldn't be
a problem for large emails.

Regards,
Pieter Philippaerts
Managed SSL/TLS: http://www.mentalis.org/go.php?sl
Jul 21 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
3029
by: mjcast | last post by:
I have been working on an ActiveX control in C#. It is packaged in a Windows Control library and the code is in a user control. The control is used as an automation receiver that is used to update a page dynamically through the use of event listeners in javascript That works, the problem is that when I run the test webpage that runs the ActiveX control, the socket does not start listening for about a minute and a half, after which it runs fine....
5
11674
by: Terry | last post by:
It's my understanding of UDP sockets that if there is a thread blocked on a "recvFrom()" call and other thread sends a UDP packet to some address, that if the machine on the other end isn't up, that the "recvFrom()" call should just continue blocking. Right? What I'm seeing is that when I send a packet to a particular address that is not responding, my "recvFrom()" call throws an exception. I get "An existing connection was forcibly...
2
702
by: Droopy | last post by:
Hi, I try to implement a reusable socket class to send and receive data. It seems to work but I have 2 problems : 1) I rely on Socket.Available to detect that the connection is closed (no more data to expect). Sometimes, Socket.Available returns 0 but the other end of the connection did not close it ! 2) This class will be used by many other classes so I have to use the
1
2153
by: Laura T. | last post by:
Hi, I've this kind a program, using sockets to communicate with the clients. One of the clients can be a web browser (like IE). When using IE as a client, the transmission blocks completely, and IE times out after a long time while stating opening from http://localhost:7765... I have a main thread that starts TCPListener and listens and accepts the connection and queues a worker thread to handle the socket transmission:
3
4138
by: Sven Groot | last post by:
I have a Windows Service application that acts as if it's an SMTP server. Outlook connects to this service, which is always running on the localhost. This works fine most of the time. However, sometimes it will no longer receive anything from Outlook. Socket.Receive would block indefinitely (actually, Socket.Poll times out, because that's what I'm using). Outlook sends it, because when I'm stepping through the code with the debugger,...
2
4146
by: Nuno Magalhaes | last post by:
I've got a simple problem I guess. How do I know when a connection is terminated without losing any data? I do something like the code below, but sometimes between socket.Receive and socket.Send I get the last chunk of data and am not able to retrieve it anymore cause the socket will be dead. Loop: { socket.Receive <----------- data arrives
6
6990
by: Pat B | last post by:
Hi, I'm writing my own implementation of the Gnutella P2P protocol using C#. I have implemented it using BeginReceive and EndReceive calls so as not to block when waiting for data from the supernode. Everything I have written works fine sending and receiving uncompressed data. But now I want to implement compression using the deflate algorithm as the Gnutella protocol accepts: Accept-Encoding: deflate Content-Encoding: deflate in the...
0
1094
by: petr.poupa | last post by:
Hello, I am beginner but so I need help. I have small script for receive data from port 3883, but it print only once. import socket HOST = 'localhost' PORT = 3883 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT))
1
2239
by: Jean-Paul Calderone | last post by:
On Mon, 12 May 2008 08:34:07 -0700 (PDT), petr.poupa@gmail.com wrote: You cannot reconnect a socket. You need to create a new one for each connection. It's also almost certainly the case that the way you are receiving data is incorrect. There is no guarantee that you will get 2048 bytes from socket.recv(2048). It isn't even guaranteed that all the bytes written to the socket by the peer will be returned by such a call. Instead, you...
0
8433
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8429
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8084
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8300
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
6761
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
5963
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
3922
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
2443
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1550
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.