нужна помош =)
есть сервер и клиент , передается и кортинка и текст ,код
Server
- Код: Выделить всё
Imports System.Net.Sockets
Imports System.IO
Public Class Form1
Dim server As New TcpListener(System.Net.IPAddress.Parse("0.0.0.0"), 8080)
Dim conect As Socket
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
server.Start()
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If server.Pending Then
conect = server.AcceptSocket
Timer2.Enabled = True
End If
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
read()
End Sub
Sub read()
If conect.Available > 0 Then
Dim buff(conect.Available - 1) As Byte
conect.Receive(buff)
fix(buff)
End If
End Sub
Sub fix(ByVal buff As Byte())
Select Case (buff(0))
Case 1
MsgBox(System.Text.Encoding.ASCII.GetString(buff, 1, buff.Length - 1))
Case 2
Dim ms As New MemoryStream
ms.Write(buff, 1, buff.Length - 1)
PictureBox1.Image = System.Drawing.Image.FromStream(ms)
ms.Flush()
Case Else
MsgBox(buff(0))
MsgBox("error")
End Select
End Sub
End Class
Client
- Код: Выделить всё
Imports System.Net.Sockets
Imports System.IO
Imports System.Drawing.Imaging
Public Class Form2
Dim client As New TcpClient
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
client.Connect("192.168.1.10", 8080)
Catch ex As Exception
MsgBox("Client Error")
End Try
End Sub
Sub send(ByVal buff As Byte())
client.GetStream.Write(buff, 0, buff.Length)
End Sub
Sub send_image()
Dim my_img As New Bitmap("d:/1.bmp")
Dim ws As New MemoryStream
my_img.Save(ws, ImageFormat.Jpeg)
send(arr(2, ws.ToArray))
ws.Flush()
End Sub
Function arr(ByVal kod As Integer, ByVal a2 As Byte()) As Byte()
Dim a1(0) As Byte
a1(0) = kod
Dim ret_byte(a1.Length + a2.Length - 1) As Byte
Array.ConstrainedCopy(a1, 0, ret_byte, 0, a1.Length)
Array.ConstrainedCopy(a2, 0, ret_byte, a1.Length, a2.Length)
Return ret_byte
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
send_image()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim text As String = "heloy"
send(arr(1, (System.Text.Encoding.ASCII.GetBytes(text.ToCharArray))))
End Sub
End Class
все работает нормально если я передаю и текст и картинку с интервалом.
но если нет интервала то ошибки..
вопрос > как зделать чтоб сервер понял что первий пакет закончился ,и началься второй.
заранее блогодарен
[Viper] :: В связи с полным отсутствием пунктуации и полной безграмотностью изложения вопроса, тема закрывается. Автору выносится, для начала, устное замечание.