473,394 Members | 1,709 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

Email - How to find out how many new Emails in POP server

Hi guys,

I am making a small program to retrieve e-mails from POP accounts. I got all
the e-mail parsing stuff figured out, but I cannot seem to come up with a way
to find out which e-mails are NEW so I don't have to retrieve them all. If
you have experience with this kind of thing, you know that the server creates
unique IDs for all the messages, but this IDs are not guaranteed to be
unique, since they can be reused once a message is deleted.
I wonder how Outlook checks for new messages... it happens very fast which
would indicate it is not really checking EVERY ID on its DB against the POP
server...

Any ideas?

Thank you in advance!

Juan Romero
-----------------------------------------
The successful person has the habit of doing the things failures don't like
to do.
E.M. Gray
Jul 22 '05 #1
4 1795
The simplest thing I would do is create an index of all the mail in the
user's mailbox.

Structure MailItem
FileName as string
IsRead as boolean
IsReplyTo as boolean
End Structure

Create a hashtable, store mailitem in it, used the message guid as the key.

Serialize the hashtable.

At the server level,
deserialize mailbox index, update index, serialize for each

Mail read, delete, new message

Or you could store the index in a database (Access, MSSQL, Oracle, Excel)

The pop server is doing this on every action for a message, and believe it
or not, its pretty fast. The question is how efficient can you make it. The
most efficient would most likely be SQL or Oracle. Second would be Access.
Finally, Serialization.


"Madestro" wrote:
Hi guys,

I am making a small program to retrieve e-mails from POP accounts. I got all
the e-mail parsing stuff figured out, but I cannot seem to come up with a way
to find out which e-mails are NEW so I don't have to retrieve them all. If
you have experience with this kind of thing, you know that the server creates
unique IDs for all the messages, but this IDs are not guaranteed to be
unique, since they can be reused once a message is deleted.
I wonder how Outlook checks for new messages... it happens very fast which
would indicate it is not really checking EVERY ID on its DB against the POP
server...

Any ideas?

Thank you in advance!

Juan Romero
-----------------------------------------
The successful person has the habit of doing the things failures don't like
to do.
E.M. Gray

Jul 22 '05 #2
"=?Utf-8?B?TWFkZXN0cm8=?=" <me_no_like_spam_juanDOTromero@bowneDOTcom>
wrote in news:F7**********************************@microsof t.com:
I am making a small program to retrieve e-mails from POP accounts. I
got all the e-mail parsing stuff figured out, but I cannot seem to
come up with a way to find out which e-mails are NEW so I don't have
to retrieve them all. If you have experience with this kind of thing,


POP3 does not keep track of what is new or not, you have to do that. You can use the UIDL command
to do this. There is a very basic demo here of POP3 client (Does not show UIDL, but it supports
UIDL):
http://www.codeproject.com/useritems/POP3Client.asp
--
Chad Z. Hower (a.k.a. Kudzu) - http://www.hower.org/Kudzu/
"Programming is an art form that fights back"

Get your ASP.NET in gear with IntraWeb!
http://www.atozed.com/IntraWeb/
Jul 22 '05 #3
Your sample code only reflects client activity and does not emphsize UIDL or
how you would implement such a concept, nor does it say why you would want to.

The question was directed as to what approach one would take to implement
the monitoring of new/read messages at the server level. Many popular POP
servers support this concept now, and is easily proven by using common
clients on a couple of pc's. Each client will know which messages, the
previous client has read and which messages are still unread. This indicates
that the server is caching that information and presenting it to the client
requesting a LIST.

The RFC for POP version 3 states that POP is designed to house new messages
on the server until a client downloads them and ultimately deletes them. It
was not designed for enhanced mail manipulation. If you want to be elaborate
with message management, the RFC points you to IMAP.

How ever, since the RFC supports flagging a message for deletion, we can
take the opportuinity to extend the bit into a byte and use it as a tripple
state flag {New, Read, Delete}

Here is a bit of skeleton code to help illustrate my point. I hope it
helps. I realize that it is far from complete and less than optimal, but I
am sure you can glean from it, what I was trying to demonstrate and move
forward with your project.

<Serializable()> Public Enum MessageStates As Byte
[new] = 0
[read] = 1
[delete] = 2
End Enum

<Serializable()> Public Class Mailbox

Private m_MailMessages As MailMessages

Public Sub New()
m_MailMessages = New MailMessages
End Sub

Public Property Messages() As MailMessages
Get
Return m_MailMessages
End Get
Set(ByVal Value As MailMessages)
m_MailMessages = Value
End Set
End Property

Public ReadOnly Property Count() As Integer
Get

Dim TheCount As Integer

For Each mm As MailMessage In m_MailMessages
If mm.MessageSate <> MessageStates.delete Then
TheCount = TheCount + 1
End If
Next

Return TheCount

End Get

End Property

Public NotInheritable Class MailMessages
Inherits Hashtable

Public Sub New()
MyBase.New()
End Sub

Public Overloads Sub Add(ByVal MessageID As String, ByVal MessagePtr As
MailMessage)
MyBase.Add(MessageID, MessagePtr)
End Sub

Public Overloads Function ContainsKey(ByVal MessageID As String) As
Boolean

If MyBase.ContainsKey(MessageID) = True Then
If CType(MyBase.Item(MessageID), MailMessage).MessageSate <>
MessageStates.delete Then
Return True
Else
Return False
End If
End If

End Function

Public Overrides Function GetEnumerator() As
System.Collections.IDictionaryEnumerator
Return New MailMessageEnumerator(Me)
End Function

Public Overloads Sub Remove(ByVal MessageID As String)

If MyBase.ContainsKey(MessageID) = True Then
CType(MyBase.Item(MessageID), MailMessage).MessageSate =
MessageStates.delete
End If

End Sub

Default Public Overloads Property Item(ByVal MessageID As String) As
MailMessage
Get
Return CType(MyBase.Item(MessageID), MailMessage)
End Get
Set(ByVal Value As MailMessage)
MyBase.Item(MessageID) = Value
End Set
End Property
End Class

Public NotInheritable Class MailMessageEnumerator
Implements IEnumerator

Private m_Enumerable As IDictionaryEnumerator

Public Sub New(ByVal MessageTable As MailMessages)
m_Enumerable = MessageTable.GetEnumerator
End Sub

Private ReadOnly Property IEnumerator_Current() As Object Implements
System.Collections.IEnumerator.Current
Get
Return m_Enumerable.Current
End Get
End Property

Private Function IEnumerator_MoveNext() As Boolean Implements
System.Collections.IEnumerator.MoveNext
m_Enumerable.MoveNext()
End Function

Private Sub IEnumerator_Reset() Implements
System.Collections.IEnumerator.Reset
m_Enumerable.Reset()
End Sub

Public ReadOnly Property Current() As MailMessage
Get
Return CType(IEnumerator_Current, MailMessage)
End Get
End Property

Public Function MoveNext() As Boolean
m_Enumerable.MoveNext()
End Function

Public Sub Reset()
IEnumerator_Reset()
End Sub

End Class

Public NotInheritable Class MailMessage
Private m_MessageID As String
Private m_MessageState As MessageStates

Public Sub New(ByVal MessageID As String)
m_MessageID = MessageID
m_MessageState = MessageStates.[new]
End Sub

Public ReadOnly Property MessageID() As String
Get
Return m_MessageID
End Get
End Property

Public Property MessageSate() As MessageStates
Get
Return m_MessageState
End Get
Set(ByVal Value As MessageStates)
m_MessageState = Value
End Set
End Property

End Class

End Class

Public Class POPServer

Private m_Shutdown As Boolean
Private m_LoggedInUsers As Hashtable
Private m_Sessions As Hashtable
Private m_Mailboxes As Hashtable

Private Structure SessionInfo
Dim ClientSession As POPSession
Dim UserName As String
End Structure

Public Sub New()
m_Shutdown = False
m_Sessions = New Hashtable
m_Mailboxes = New Hashtable
m_LoggedInUsers = New Hashtable
End Sub

'main loop
Sub MainLoop()

Dim poplistener As System.Net.Sockets.TcpListener
poplistener = New
System.Net.Sockets.TcpListener(System.Net.IPAddres s.Parse("127.0.0.1"), 5555)

'With a TCPLisener, wait for a new connection
poplistener.Start()

Do While Not m_Shutdown

'Accept any new clients out there
Dim POPClient As System.Net.Sockets.TcpClient

POPClient = poplistener.AcceptTcpClient

'We have a connection

'Pass it on
Dim ThisSessionInfo As SessionInfo
Dim ThisSession As POPSession
Dim POPThread As System.Threading.Thread
Dim SessionID As String

SessionID = System.Guid.NewGuid.ToString

ThisSession = New POPSession(Me, POPClient, SessionID)

With ThisSessionInfo
.ClientSession = ThisSession
End With

m_Sessions.Add(SessionID, ThisSessionInfo)

POPThread = New System.Threading.Thread(AddressOf
ThisSession.SessionStart)

POPThread.Start()

Loop

poplistener.Stop()

End Sub

Public Function SessionLogin(ByVal SessionID As String, ByVal UserName As
String, ByVal Password As String) As Byte()

Dim bSuccess As Boolean

'Login Validation logic here

If bSuccess Then

If Not m_LoggedInUsers.ContainsKey(UserName.ToUpper) Then
Dim SessionMap As Hashtable
SessionMap = New Hashtable

SessionMap.Add(SessionID, SessionID)

m_LoggedInUsers.Add(UserName, SessionMap)

Else

Dim SessionMap As Hashtable

SessionMap = CType(m_LoggedInUsers(UserName), Hashtable)
SessionMap.Add(SessionID, SessionID)

End If

If m_Sessions.ContainsKey(SessionID) Then
Dim ThisSessionInfo As SessionInfo
ThisSessionInfo = CType(m_Sessions.Item(SessionID), SessionInfo)
ThisSessionInfo.UserName = UserName.ToUpper
End If

Dim ThisMailbox As Mailbox

'Deserialize the mailbox

m_Mailboxes.Add(UserName, ThisMailbox)

End If

End Function

Public Function SessionRETR(ByVal SessionID As String, ByVal MessageID As
String) As Byte()

Dim bData() As Byte
Dim bSuccess As Boolean

'Validate our session

'Read the message into our byte array

If bSuccess Then
Dim ThisSessionInfo As SessionInfo

If m_Sessions.ContainsKey(SessionID) Then

ThisSessionInfo = m_Sessions.Item(SessionID)

If m_Mailboxes.ContainsKey(ThisSessionInfo.UserName) Then

Dim ThisMailbox As Mailbox

ThisMailbox = CType(m_Mailboxes.Item(ThisSessionInfo.UserName),
Mailbox)
ThisMailbox.Messages(MessageID).MessageSate = MessageStates.read

Return bData

End If

End If

End If
End Function

Public Sub SessionLogout(ByVal SessionID As String)

Dim ThisSessionInfo As SessionInfo

'Determine if we need to close this mailbox
If m_Sessions.ContainsKey(SessionID) Then

ThisSessionInfo = m_Sessions.Item(SessionID)

If m_LoggedInUsers.ContainsKey(ThisSessionInfo.UserNa me) Then

Dim SessionMap As Hashtable

SessionMap = m_LoggedInUsers.Item(ThisSessionInfo.UserName)

If SessionMap.ContainsKey(SessionID) Then

SessionMap.Remove(SessionMap.Item(SessionID))

If SessionMap.Count = 0 Then

If m_Mailboxes.ContainsKey(ThisSessionInfo.UserName) Then
Dim ThisMailBox As Mailbox
ThisMailBox =
CType(m_Mailboxes.Item(ThisSessionInfo.UserName), Mailbox)

'Check for deleted messages

SyncLock Me

For Each mm As Mailbox.MailMessage In ThisMailBox.Messages
If mm.MessageSate = MessageStates.delete Then
'Delete the message
ThisMailBox.Messages.Remove(mm)
End If
Next

End SyncLock

'Serialize the mailbox back to the hard drive

End If

m_Mailboxes.Remove(ThisSessionInfo.UserName)

m_LoggedInUsers.Remove(m_LoggedInUsers.Item(ThisSe ssionInfo.UserName))

End If

End If

End If

End If

End Sub

End Class

Public Class POPSession

'I think I should use delegate, but I can never figure them out

'Public Delegate Function Login(ByVal SessionID As String, ByVal UserName
As String, ByVal Password As String) As Byte()
'Public Delegate Function RETR(ByVal SessionID As String, ByVal MessageID
As String) As Byte()
'Public Delegate Sub Logout(ByVal SessionID As String)

'Public DoLogin As Login
'Public DoRETR As RETR
'Public DoLogout As Logout

Private m_PopServer As POPServer
Private m_TcpClient As System.Net.Sockets.TcpClient
Private m_SessionID As String
Private m_UserName As String

Public Sub New(ByVal PopServer As POPServer, ByVal POPClient As
System.Net.Sockets.TcpClient, ByVal SessionID As String)
m_PopServer = PopServer
m_TcpClient = POPClient
m_SessionID = SessionID
End Sub

Public Sub SessionStart()

Dim clientcommand As String
Dim commandargs() As String

'Listen for new commands
While 1 = 1

'parsing logic here

Select Case clientcommand.ToUpper
Case "PASS"
'Assuming we already had the USER command
LocalPASS(commandargs(0))
Case "RETR"
LocalRETR(commandargs(0))
Case "QUIT"
LocalLogout()
End Select

End While

End Sub

Private Sub LocalPASS(ByVal Password As String)

Dim bData As Byte()

bData = m_PopServer.SessionLogin(m_SessionID, m_UserName, Password)

sendData(bData)

End Sub

Private Sub LocalRETR(ByVal MessageID As String)
Dim bData As Byte()

bData = m_PopServer.SessionRETR(m_SessionID, MessageID)

sendData(bData)

End Sub

Private Sub LocalLogout()
m_PopServer.SessionLogout(m_SessionID)
End Sub

Private Sub sendData(ByVal DataToSend As Byte())
Dim stream As System.net.Sockets.NetworkStream = m_TcpClient.GetStream()
'Log Activity here

'Send Data
stream.Write(DataToSend, 0, DataToSend.Length)
End Sub

End Class

"Chad Z. Hower aka Kudzu" wrote:
"=?Utf-8?B?TWFkZXN0cm8=?=" <me_no_like_spam_juanDOTromero@bowneDOTcom>
wrote in news:F7**********************************@microsof t.com:
I am making a small program to retrieve e-mails from POP accounts. I
got all the e-mail parsing stuff figured out, but I cannot seem to
come up with a way to find out which e-mails are NEW so I don't have
to retrieve them all. If you have experience with this kind of thing,


POP3 does not keep track of what is new or not, you have to do that. You can use the UIDL command
to do this. There is a very basic demo here of POP3 client (Does not show UIDL, but it supports
UIDL):
http://www.codeproject.com/useritems/POP3Client.asp
--
Chad Z. Hower (a.k.a. Kudzu) - http://www.hower.org/Kudzu/
"Programming is an art form that fights back"

Get your ASP.NET in gear with IntraWeb!
http://www.atozed.com/IntraWeb/

Jul 22 '05 #4
Nevermind, it was too late last night. Madestro was asking about the client.

"AMDIRT" wrote:
Your sample code only reflects client activity and does not emphsize UIDL or
how you would implement such a concept, nor does it say why you would want to.

The question was directed as to what approach one would take to implement
the monitoring of new/read messages at the server level. Many popular POP
servers support this concept now, and is easily proven by using common
clients on a couple of pc's. Each client will know which messages, the
previous client has read and which messages are still unread. This indicates
that the server is caching that information and presenting it to the client
requesting a LIST.

The RFC for POP version 3 states that POP is designed to house new messages
on the server until a client downloads them and ultimately deletes them. It
was not designed for enhanced mail manipulation. If you want to be elaborate
with message management, the RFC points you to IMAP.

How ever, since the RFC supports flagging a message for deletion, we can
take the opportuinity to extend the bit into a byte and use it as a tripple
state flag {New, Read, Delete}

Here is a bit of skeleton code to help illustrate my point. I hope it
helps. I realize that it is far from complete and less than optimal, but I
am sure you can glean from it, what I was trying to demonstrate and move
forward with your project.

<Serializable()> Public Enum MessageStates As Byte
[new] = 0
[read] = 1
[delete] = 2
End Enum

<Serializable()> Public Class Mailbox

Private m_MailMessages As MailMessages

Public Sub New()
m_MailMessages = New MailMessages
End Sub

Public Property Messages() As MailMessages
Get
Return m_MailMessages
End Get
Set(ByVal Value As MailMessages)
m_MailMessages = Value
End Set
End Property

Public ReadOnly Property Count() As Integer
Get

Dim TheCount As Integer

For Each mm As MailMessage In m_MailMessages
If mm.MessageSate <> MessageStates.delete Then
TheCount = TheCount + 1
End If
Next

Return TheCount

End Get

End Property

Public NotInheritable Class MailMessages
Inherits Hashtable

Public Sub New()
MyBase.New()
End Sub

Public Overloads Sub Add(ByVal MessageID As String, ByVal MessagePtr As
MailMessage)
MyBase.Add(MessageID, MessagePtr)
End Sub

Public Overloads Function ContainsKey(ByVal MessageID As String) As
Boolean

If MyBase.ContainsKey(MessageID) = True Then
If CType(MyBase.Item(MessageID), MailMessage).MessageSate <>
MessageStates.delete Then
Return True
Else
Return False
End If
End If

End Function

Public Overrides Function GetEnumerator() As
System.Collections.IDictionaryEnumerator
Return New MailMessageEnumerator(Me)
End Function

Public Overloads Sub Remove(ByVal MessageID As String)

If MyBase.ContainsKey(MessageID) = True Then
CType(MyBase.Item(MessageID), MailMessage).MessageSate =
MessageStates.delete
End If

End Sub

Default Public Overloads Property Item(ByVal MessageID As String) As
MailMessage
Get
Return CType(MyBase.Item(MessageID), MailMessage)
End Get
Set(ByVal Value As MailMessage)
MyBase.Item(MessageID) = Value
End Set
End Property
End Class

Public NotInheritable Class MailMessageEnumerator
Implements IEnumerator

Private m_Enumerable As IDictionaryEnumerator

Public Sub New(ByVal MessageTable As MailMessages)
m_Enumerable = MessageTable.GetEnumerator
End Sub

Private ReadOnly Property IEnumerator_Current() As Object Implements
System.Collections.IEnumerator.Current
Get
Return m_Enumerable.Current
End Get
End Property

Private Function IEnumerator_MoveNext() As Boolean Implements
System.Collections.IEnumerator.MoveNext
m_Enumerable.MoveNext()
End Function

Private Sub IEnumerator_Reset() Implements
System.Collections.IEnumerator.Reset
m_Enumerable.Reset()
End Sub

Public ReadOnly Property Current() As MailMessage
Get
Return CType(IEnumerator_Current, MailMessage)
End Get
End Property

Public Function MoveNext() As Boolean
m_Enumerable.MoveNext()
End Function

Public Sub Reset()
IEnumerator_Reset()
End Sub

End Class

Public NotInheritable Class MailMessage
Private m_MessageID As String
Private m_MessageState As MessageStates

Public Sub New(ByVal MessageID As String)
m_MessageID = MessageID
m_MessageState = MessageStates.[new]
End Sub

Public ReadOnly Property MessageID() As String
Get
Return m_MessageID
End Get
End Property

Public Property MessageSate() As MessageStates
Get
Return m_MessageState
End Get
Set(ByVal Value As MessageStates)
m_MessageState = Value
End Set
End Property

End Class

End Class

Public Class POPServer

Private m_Shutdown As Boolean
Private m_LoggedInUsers As Hashtable
Private m_Sessions As Hashtable
Private m_Mailboxes As Hashtable

Private Structure SessionInfo
Dim ClientSession As POPSession
Dim UserName As String
End Structure

Public Sub New()
m_Shutdown = False
m_Sessions = New Hashtable
m_Mailboxes = New Hashtable
m_LoggedInUsers = New Hashtable
End Sub

'main loop
Sub MainLoop()

Dim poplistener As System.Net.Sockets.TcpListener
poplistener = New
System.Net.Sockets.TcpListener(System.Net.IPAddres s.Parse("127.0.0.1"), 5555)

'With a TCPLisener, wait for a new connection
poplistener.Start()

Do While Not m_Shutdown

'Accept any new clients out there
Dim POPClient As System.Net.Sockets.TcpClient

POPClient = poplistener.AcceptTcpClient

'We have a connection

'Pass it on
Dim ThisSessionInfo As SessionInfo
Dim ThisSession As POPSession
Dim POPThread As System.Threading.Thread
Dim SessionID As String

SessionID = System.Guid.NewGuid.ToString

ThisSession = New POPSession(Me, POPClient, SessionID)

With ThisSessionInfo
.ClientSession = ThisSession
End With

m_Sessions.Add(SessionID, ThisSessionInfo)

POPThread = New System.Threading.Thread(AddressOf
ThisSession.SessionStart)

POPThread.Start()

Loop

poplistener.Stop()

End Sub

Public Function SessionLogin(ByVal SessionID As String, ByVal UserName As
String, ByVal Password As String) As Byte()

Dim bSuccess As Boolean

'Login Validation logic here

If bSuccess Then

If Not m_LoggedInUsers.ContainsKey(UserName.ToUpper) Then
Dim SessionMap As Hashtable
SessionMap = New Hashtable

SessionMap.Add(SessionID, SessionID)

m_LoggedInUsers.Add(UserName, SessionMap)

Else

Dim SessionMap As Hashtable

SessionMap = CType(m_LoggedInUsers(UserName), Hashtable)
SessionMap.Add(SessionID, SessionID)

End If

If m_Sessions.ContainsKey(SessionID) Then
Dim ThisSessionInfo As SessionInfo
ThisSessionInfo = CType(m_Sessions.Item(SessionID), SessionInfo)
ThisSessionInfo.UserName = UserName.ToUpper
End If

Dim ThisMailbox As Mailbox

'Deserialize the mailbox

m_Mailboxes.Add(UserName, ThisMailbox)

End If

End Function

Public Function SessionRETR(ByVal SessionID As String, ByVal MessageID As
String) As Byte()

Dim bData() As Byte
Dim bSuccess As Boolean

'Validate our session

Jul 22 '05 #5

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

Similar topics

5
by: simonc | last post by:
I've been programming in assembler and C/C++ for a number of years, but I'm only just starting down the road of PHP & MYSQL. I have a couple of questions: (1) Before I start writing my own...
4
by: Bill | last post by:
Is it possible to somehow activate a page containing a php script by sending an email to a mailbox on the server? I have a script that sends out notification emails to an individual. He wants to...
4
by: dmiller23462 | last post by:
So here's my problem.....I need to set up different email distributions based on which option in the following Select form has been chosen....For instance if "Putaway" is chosen it needs to email...
5
by: BaWork | last post by:
I have a web form where a client can select which site members to send an email to. This form is populated from the contents of the member table, so the form can have 0-x names listed on it...
8
by: Dica | last post by:
i've got a client that wants to be able to review records about IIS generated emails. in his own words, he wants the "ability to track and report message status (i.e. how many messages were sent...
13
by: joe215 | last post by:
I want my users to send emails from a Windows app that I am developing in Visual Basic.NET 2003. I found a good example of sending email to a SMTP server using the SmtpMail class. However, using...
24
by: Arno R | last post by:
Hi all, I have a client with several shoe-shops. Customers can leave their email-address if they want to be notified when there is a sale. Input is validated with instr() I am checking for @...
4
by: MostlyH2O | last post by:
Hi Folks, I have been going in circles for weeks - trying to find the best way to send and manage emails from my ASP application. The email page might send as many as 500 individual emails at a...
3
by: JaffaCakes | last post by:
I want to send an email confirmation after a user completes a form on our Internet page. I am testing this with the System.Web.Mail.SmtpMail class. If I do a SmtpMail.Send then the message takes...
1
by: slinky | last post by:
Thanks in advance for for any clues: I have a website I'm building using MS-Visual Web Developer Express Asp.Net/VB.net). I'm tooling it to collect names and emails to send out our newsletter. ...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
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...
0
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...

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.