клиент и сервер

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

клиент и сервер

Сообщение strelec » 26.03.2009 (Чт) 0:33

привет всем
нужна помош =)
есть сервер и клиент , передается и кортинка и текст ,код

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] :: В связи с полным отсутствием пунктуации и полной безграмотностью изложения вопроса, тема закрывается. Автору выносится, для начала, устное замечание.

Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 69

    TopList