473,396 Members | 1,987 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,396 software developers and data experts.

TCP question

I need to transfer different types of data from my tcp client to my tcp
server - string, bynary, datasets.
Ho to know what exactly data I receive?
Nov 21 '05 #1
6 1412
Hi Nikolay,

All TCP data is transmitted as a series of bytes. It's your
responsibility to determine a proper higher-level protocol for these
bytes so you know what you're looking at.

Take the MSN protocol for example. Sometimes you receive a command that
contains binary data. The first part of the command is a Command String
(a straight Byte-To-ASCII conversion) which gives you the important
information about the command (most notably the type of command and the
length of the incoming data). You download the amount of data the
command tells you it has sent, and then judge what to do with that data
based on the command you received.

I personally would do something similar in your server and client. I
would decide on a protocol to be applied on top of TCP to designate what
sort of data you are transmitting.

Regards,
-Adam.

Nikolay Petrov wrote:
I need to transfer different types of data from my tcp client to my tcp
server - string, bynary, datasets.
Ho to know what exactly data I receive?

Nov 21 '05 #2
I thought of way to send some kind of headers, but I am very new to
programming and I don't know how.
I wonder, because data is transferred as Bytes, should the headers be binary
or string.
the simplest thing that I can figure is to use an integer as header and
based on the integer to decide what kind of data is transmitted. Just can't
figure out how to attach the header to the sent data and how to separate it
at the receiver.

"Adam Goossens" <ad**********@users.sourceforge.net> wrote in message
news:uB**************@TK2MSFTNGP15.phx.gbl...
Hi Nikolay,

All TCP data is transmitted as a series of bytes. It's your responsibility
to determine a proper higher-level protocol for these bytes so you know
what you're looking at.

Take the MSN protocol for example. Sometimes you receive a command that
contains binary data. The first part of the command is a Command String (a
straight Byte-To-ASCII conversion) which gives you the important
information about the command (most notably the type of command and the
length of the incoming data). You download the amount of data the command
tells you it has sent, and then judge what to do with that data based on
the command you received.

I personally would do something similar in your server and client. I would
decide on a protocol to be applied on top of TCP to designate what sort of
data you are transmitting.

Regards,
-Adam.

Nikolay Petrov wrote:
I need to transfer different types of data from my tcp client to my tcp
server - string, bynary, datasets.
Ho to know what exactly data I receive?


Nov 21 '05 #3
| I wonder, because data is transferred as Bytes, should the headers be
binary
| or string.

uhhhh...humph. ;^)

try looking at the smtp or nntp protocols. that will help you get started.
to address your above statement fairly...it is strictly arbitrary which
approach you take.
Nov 21 '05 #4
Nikolay,
In addition to the other comments, the following article demonstrates how to
use a BinaryReader & BinaryWriter do send & receive a "message" over a
NetworkStream.

http://msdn.microsoft.com/library/de...rp09182003.asp

The example is in C#, however it should be easily converted to VB.NET, post
if you need help.

I would define a "message" that included a header & detail. The "header"
would include information such as the type of message & possible length of
message.

The "type of message" could be an Integer, an Enum, a String, or a Double,
or a few other things; just about any serializable type; just as long as all
"messages" use the same "type". I would probably use an Enum, as it
encapsulates the types nicely.

For example using an Enum:

Public Enum MessageType As Integer
[String]
[Integer]
datasets
End Enum
Dim writer As BinaryWriter
writer.Write(MessageType.String)
writer.Write("This is the string")
writer.Write(MessageType.Integer)
writer.Write(100)
writer.Write(MessageType.datasets)
' code to write a DataSet to the Stream

Dim reader As BinaryReader
Dim type As MessageType = CType(reader.ReadInt32(), MessageType)
Select Case type
Case MessageType.String
Dim s As String = reader.ReadString()
Case MessageType.Integer
Dim i As Integer = reader.ReadInt32
Case MessageType.datasets
' code to read the DataSet from the stream
End Select

For example using A String:

Dim writer As BinaryWriter
writer.Write("String")
writer.Write("This is the string")
writer.Write("Integer")
writer.Write(100)
writer.Write("datasets")
' code to write a DataSet to the Stream

Dim reader As BinaryReader
Dim type As String = reader.ReadString()
Select Case type
Case "String"
Dim s As String = reader.ReadString()
Case "Integer"
Dim i As Integer = reader.ReadInt32
Case "datasets"
' code to read the DataSet from the stream
End Select
Hope this helps
Jay

"Nikolay Petrov" <jo**************@mail.bg> wrote in message
news:uL**************@TK2MSFTNGP11.phx.gbl...
I need to transfer different types of data from my tcp client to my tcp
server - string, bynary, datasets.
Ho to know what exactly data I receive?

Nov 21 '05 #5
Jay that was very helpful, thank you!
I've red many answer given by you and all of them were great.
You are very useful for the community!

"Jay B. Harlow [MVP - Outlook]" <Ja************@msn.com> wrote in message
news:eL**************@TK2MSFTNGP09.phx.gbl...
Nikolay,
In addition to the other comments, the following article demonstrates how
to
use a BinaryReader & BinaryWriter do send & receive a "message" over a
NetworkStream.

http://msdn.microsoft.com/library/de...rp09182003.asp

The example is in C#, however it should be easily converted to VB.NET,
post
if you need help.

I would define a "message" that included a header & detail. The "header"
would include information such as the type of message & possible length of
message.

The "type of message" could be an Integer, an Enum, a String, or a Double,
or a few other things; just about any serializable type; just as long as
all "messages" use the same "type". I would probably use an Enum, as it
encapsulates the types nicely.

For example using an Enum:

Public Enum MessageType As Integer
[String]
[Integer]
datasets
End Enum
Dim writer As BinaryWriter
writer.Write(MessageType.String)
writer.Write("This is the string")
writer.Write(MessageType.Integer)
writer.Write(100)
writer.Write(MessageType.datasets)
' code to write a DataSet to the Stream

Dim reader As BinaryReader
Dim type As MessageType = CType(reader.ReadInt32(), MessageType)
Select Case type
Case MessageType.String
Dim s As String = reader.ReadString()
Case MessageType.Integer
Dim i As Integer = reader.ReadInt32
Case MessageType.datasets
' code to read the DataSet from the stream
End Select

For example using A String:

Dim writer As BinaryWriter
writer.Write("String")
writer.Write("This is the string")
writer.Write("Integer")
writer.Write(100)
writer.Write("datasets")
' code to write a DataSet to the Stream

Dim reader As BinaryReader
Dim type As String = reader.ReadString()
Select Case type
Case "String"
Dim s As String = reader.ReadString()
Case "Integer"
Dim i As Integer = reader.ReadInt32
Case "datasets"
' code to read the DataSet from the stream
End Select
Hope this helps
Jay

"Nikolay Petrov" <jo**************@mail.bg> wrote in message
news:uL**************@TK2MSFTNGP11.phx.gbl...
I need to transfer different types of data from my tcp client to my tcp
server - string, bynary, datasets.
Ho to know what exactly data I receive?


Nov 21 '05 #6
Jay that was very helpful, thank you!
I've red many answer given by you and all of them were great.
You are very useful for the community!

"Jay B. Harlow [MVP - Outlook]" <Ja************@msn.com> wrote in message
news:eL**************@TK2MSFTNGP09.phx.gbl...
Nikolay,
In addition to the other comments, the following article demonstrates how
to
use a BinaryReader & BinaryWriter do send & receive a "message" over a
NetworkStream.

http://msdn.microsoft.com/library/de...rp09182003.asp

The example is in C#, however it should be easily converted to VB.NET,
post
if you need help.

I would define a "message" that included a header & detail. The "header"
would include information such as the type of message & possible length of
message.

The "type of message" could be an Integer, an Enum, a String, or a Double,
or a few other things; just about any serializable type; just as long as
all "messages" use the same "type". I would probably use an Enum, as it
encapsulates the types nicely.

For example using an Enum:

Public Enum MessageType As Integer
[String]
[Integer]
datasets
End Enum
Dim writer As BinaryWriter
writer.Write(MessageType.String)
writer.Write("This is the string")
writer.Write(MessageType.Integer)
writer.Write(100)
writer.Write(MessageType.datasets)
' code to write a DataSet to the Stream

Dim reader As BinaryReader
Dim type As MessageType = CType(reader.ReadInt32(), MessageType)
Select Case type
Case MessageType.String
Dim s As String = reader.ReadString()
Case MessageType.Integer
Dim i As Integer = reader.ReadInt32
Case MessageType.datasets
' code to read the DataSet from the stream
End Select

For example using A String:

Dim writer As BinaryWriter
writer.Write("String")
writer.Write("This is the string")
writer.Write("Integer")
writer.Write(100)
writer.Write("datasets")
' code to write a DataSet to the Stream

Dim reader As BinaryReader
Dim type As String = reader.ReadString()
Select Case type
Case "String"
Dim s As String = reader.ReadString()
Case "Integer"
Dim i As Integer = reader.ReadInt32
Case "datasets"
' code to read the DataSet from the stream
End Select
Hope this helps
Jay

"Nikolay Petrov" <jo**************@mail.bg> wrote in message
news:uL**************@TK2MSFTNGP11.phx.gbl...
I need to transfer different types of data from my tcp client to my tcp
server - string, bynary, datasets.
Ho to know what exactly data I receive?


Nov 21 '05 #7

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

Similar topics

1
by: Mohammed Mazid | last post by:
Can anyone please help me on how to move to the next and previous question? Here is a snippet of my code: Private Sub cmdNext_Click() End Sub Private Sub cmdPrevious_Click() showrecord
3
by: Stevey | last post by:
I have the following XML file... <?xml version="1.0"?> <animals> <animal> <name>Tiger</name> <questions> <question index="0">true</question> <question index="1">true</question> </questions>
7
by: nospam | last post by:
Ok, 3rd or is it the 4th time I have asked this question on Partial Types, so, since it seems to me that Partial Types is still in the design or development stages at Microsoft, I am going to ask...
3
by: Ekqvist Marko | last post by:
Hi, I have one Access database table including questions and answers. Now I need to give answer id automatically to questionID column. But I don't know how it is best (fastest) to do? table...
10
by: glenn | last post by:
I am use to programming in php and the way session and post vars are past from fields on one page through to the post page automatically where I can get to their values easily to write to a...
10
by: Rider | last post by:
Hi, simple(?) question about asp.net configuration.. I've installed ASP.NET 2.0 QuickStart Sample successfully. But, When I'm first start application the follow message shown. ========= Server...
53
by: Jeff | last post by:
In the function below, can size ever be 0 (zero)? char *clc_strdup(const char * CLC_RESTRICT s) { size_t size; char *p; clc_assert_not_null(clc_strdup, s); size = strlen(s) + 1;
56
by: spibou | last post by:
In the statement "a *= expression" is expression assumed to be parenthesized ? For example if I write "a *= b+c" is this the same as "a = a * (b+c)" or "a = a * b+c" ?
2
by: Allan Ebdrup | last post by:
Hi, I'm trying to render a Matrix question in my ASP.Net 2.0 page, A matrix question is a question where you have several options that can all be rated according to several possible ratings (from...
3
by: Zhang Weiwu | last post by:
Hello! I wrote this: ..required-question p:after { content: "*"; } Corresponding HTML: <div class="required-question"><p>Question Text</p><input /></div> <div...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
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
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,...
0
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,...

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.