|
-
Oct 29th, 2006, 07:55 AM
#1
Thread Starter
Junior Member
Sockets/TCP Send problem, send works for short strings...
i'm working on a simple sender/receiver... but i got a problem.
It seems to send small strings accross fine ... but not the content of my MULTI LINE textbox. LENGH OF TEXTBOX 524 CHARACTERS.
Transmitter
VB Code:
Dim TcpClient As New TcpClient
If Not TcpClient.Connected Then
TcpClient.Connect(9000, "127.0.0.1")
End If
Dim networkStream As NetworkStream = TcpClient.GetStream()
' If networkStream.CanWrite Then
Dim sendbytes(10240) As Byte
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' REPLACE "TEST DATA TEST DATA" WITH A MULTI-LINE TEXT BOX RESULT
''' VALUE.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sendbytes = Encoding.ASCII.GetBytes("TEST DATA TEST DATA")
networkStream.Write(sendBytes, 0, sendBytes.Length)
'End If
TcpClient.Close()
Listener... just spits the output to console....
VB Code:
Dim server As TcpListener
server = Nothing
'On Error Resume Next
Try
' Set the TcpListener on port 9000.
Dim port As Int32 = 9000
Dim localAddr As System.Net.IPAddress = System.Net.IPAddress.Parse("127.0.0.1")
server = New TcpListener(localAddr, port)
' Start listening for client requests.
server.Start()
' Buffer for reading data
Dim bytes(20480) As Byte
Dim data As String = Nothing
' Enter the listening loop.
While True
Console.Write("Waiting for a connection... ")
' Perform a blocking call to accept requests.
' You could also user server.AcceptSocket() here.
Dim client As TcpClient = server.AcceptTcpClient()
Console.WriteLine("Connected!")
data = Nothing
' Get a stream object for reading and writing
Dim stream As NetworkStream = client.GetStream()
Dim i As Int32
' Loop to receive all the data sent by the client.
i = stream.Read(bytes, 0, bytes.Length)
While (i <> 0)
' Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
Console.WriteLine("Received: {0}", data)
' Process the data sent by the client.
data = data.ToUpper()
'Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)
' Send back a response.
'stream.Write(msg, 0, msg.Length)
'Console.WriteLine("Sent: {0}", data)
i = stream.Read(bytes, 0, bytes.Length)
End While
' Shutdown and end connection
client.Close()
End While
Catch e As SocketException
Console.WriteLine("SocketException: {0}", e)
Finally
server.Stop()
End Try
Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")
Console.Read()
Last edited by Dario; Oct 30th, 2006 at 04:02 AM.
-
Oct 29th, 2006, 11:09 AM
#2
Re: Sockets/TCP Send problem, send works for short strings...
A couple suggestions first off:
1) Edit that post, seclect all the code, and use the VBCode tags (should be up above the textbox when you edit). This will format it in a much more readable way.
2) Get away from using On Error Goto in favor of the more .NET compliant structured exception handling with Try...Catch blocks.
3) Tell me something about the problem. You said in that other post that the problem occurs when the string is >512, but you also said something about <1024. Is it the case that only strings of intermediate length fail? That would be really weird. Anything over some size would make more sense.
Also, what happens when it fails, and at what point does it fail? Does nothing come through, or only the first part? Or is it that the reply doesn't come through?
Depending on that, I might have an answer, though I have never actually liked my answer to this.
My usual boring signature: Nothing
 
-
Oct 30th, 2006, 04:09 AM
#3
Thread Starter
Junior Member
Re: Sockets/TCP Send problem, send works for short strings...
1. Done (edited it before thats why the vbcode tag stuffed up)
2. Used on error just to check it anything comes through.
3. I send a accross a string say "TEST TEST TEST!" it comes through fine,
but when i send the contents of a textbox, which is much longer in size, nothing comes through. The lengh of the string in textbox is variable range between 512-1500 characters.
I adding most of the things into the textbox, then i want to send it all accross at once.
Could the VbCrlf cousing the issue? Cause thats what i'm using to to move onto the next line in the textbox field. When i limit my textbox to a single string without the VbCrLf to move to the next line, it seems to work. I'm puzzeled?
Surely you can transmit VbCrLf....
-
Nov 15th, 2006, 02:33 PM
#4
Member
Re: Sockets/TCP Send problem, send works for short strings...
I THINK you're onto the issue.
I remember reading that when you send data with sockets they're terminated with the line-feed charater?
I THINK that is correct.
-
Nov 15th, 2006, 10:23 PM
#5
Thread Starter
Junior Member
Re: Sockets/TCP Send problem, send works for short strings...
Yeah gotten around it... without using the bloody VbCrLf.
Just dumped it all into an array then tranmitted 1 by 1. Worked fine this way.
:-)
Thanx for letting me know that it terminates the transmission... seems to be the case.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|