تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] اذا استقبلت صورة بهذه الطريقة كيف اعطي المستخدم خيار بتحميلها او تجاهلها
#1
كود :
Imports System.IO
Imports System.Net.Sockets
Imports System.Net

Public Class Form1
    Dim ofd As New OpenFileDialog
    Dim listener As TcpListener
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        ofd.Filter = "Jpg(*.jpg)|*.jpg|png (*.png)|*.png|gif (*.gif)|*.gif"
        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            Dim mypic_path As String = ofd.FileName
            PictureBox1.Image = Image.FromFile(mypic_path)
            Dim ms As MemoryStream = New MemoryStream
            PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
            Dim arrImage As Byte() = ms.GetBuffer
            ms.Close()
            Dim myclient As TcpClient = New TcpClient("192.168.1.2", 9999)

            Dim myns As NetworkStream = myclient.GetStream
            Dim mysw As BinaryWriter = New BinaryWriter(myns)
            mysw.Write(arrImage)
            mysw.Close()
            myns.Close()
            myclient.Close()
        End If

    End Sub
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        listener = New TcpListener(IPAddress.Any, "9999")
        Dim athread As New Threading.Thread(AddressOf list)
        athread.Start()
    End Sub
    Private Sub list()
        listener.Start()
    End Sub
     Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        If listener.Pending Then
            Dim mysocket = listener.AcceptSocket
            Dim myns = New NetworkStream(mysocket)
            PictureBox2.Image = Image.FromStream(myns)
        End If
    End Sub
End Class
الرد }}}
تم الشكر بواسطة:
#2
اللي اقصده مثل برامج المحادثة حين يرسل صورة يعطيه خيار بالتحميل او التجاهل
------
طيب لو حبيت انه بمجرد ان يوافق باستقبال الصورة اريدها تظهر في اداة richtextbox
الرد }}}
تم الشكر بواسطة:
#3
لإعطاء خيار التحميل من عدمه:
كود :
If listener.Pending Then
            If MessageBox.Show("A photo has been sent to you, do you want to recieve it?", "Confirmation", MessageBoxButtons.YesNo) = System.Windows.Forms.DialogResult.Yes Then
                Dim mysocket = listener.AcceptSocket
                Dim myns = New NetworkStream(mysocket)
                PictureBox2.Image = Image.FromStream(myns)
            End If
        End If

أما لإظهار صورة في RichTextBox فهناك طريقتين

السهلة:
كود :
My.Computer.Clipboard.SetImage(PictureBox2.Image)
        RichTextBox1.Paste(Windows.Forms.DataFormats.GetFormat(System.Windows.Forms.DataFormats.Bitmap))

الصعبة:
إيجاد الـFormat المناسب للكلام مع الصورة و وضعه في خاصية Rtf للـRichTextBox
الرد }}}
تم الشكر بواسطة: سعود
#4
في برامج نقل البيانات

انا افضل بدل نقل بيانات عشوائية ان تقوم بانشاء struct وتملأه بالبيانات وتحوله الى Byte array بواسطة Serialize

والجهة المستقبلة تسوي Deserialize وتسترجع الstruct من الbyte array


يعني اولا تسوي Class او يفضل عمل تركيب (struct)
ونجعله يدعم مبدأ الSerializable باضافة المواصفة :


PHP كود :
<Serializable_
Public Structure Message
    
'variable'
    
Public RtfMessage As String
    
Public senderName As String
    
Public image As Image Nothing


    
'constractor'
    
Public Sub New(RtfMessage As StringsenderName As Stringimage As Image)
        
Me.RtfMessage RtfMessage
        Me
.senderName senderName
        Me
.image image
    End Sub
End Structure 



ثانيا نستعمل الstruct وبعدين نحوله الbyte array بواسطة Serializa عشان نرسله بواسطة دالة Send :

PHP كود :
Private Sub sendButton_Click(sender As ObjectAs EventArgs)
    
Dim msg As New Message("<b>Hello i'm Mohammed""Ali"Nothing)

    
Dim msgData As Byte() = ToByteArray(msg)

    
mySock.Send(msgData)
End Sub


Public Function ToByteArray(source As Object) As Byte()
    
Dim formatter = New BinaryFormatter()
    
Using stream = New MemoryStream()
        
formatter.Serialize(streamsource)
        
Dim data As Byte() = stream.ToArray()
        
stream.Close()
        Return 
data
    End Using
End 
Function 




--

الان الجهة المستقبلة ببساطة يمكنها ارجاع الbyte array الى الobject الاصلي وقراءة الرسالة :-

PHP كود :
Private Sub receiveMessages_Click(sender As ObjectAs EventArgs)
    While 
True
        
'قراءة البيانات'
        
Application.DoEvents()
        
Dim buffer As Byte() = New Byte(999999) {}
        
Dim totalReceived As Integer mySock.Receive(buffer)


        
'اكبر من البيانات التي تم استلامها bufferقد تكون قيمة '
        'بعد اعادة كتابتها بصورة صحيحة msgData فهنا يتم حفظ البيانات في المتغير '
        
Dim msgData As Byte()
        
Using rw As New MemoryStream()
            
rw.Write(msgData0totalReceived)
            
rw.Close()
        
End Using


        
''ارجاع الرسالة الى التركي'
        Dim msg As Message = DirectCast(ToObject(msgData), Message)


        '
قراءة الرسالة'
        richTextBox1.Rtf = msg.RtfMessage
        MessageBox.Show("This Message was received from : " + msg.senderName)
        If msg.image IsNot Nothing Then
            pictureBox1.Image = msg.image
        End If
    End While
End Sub


Public Function ToObject(source As Byte()) As Object
    Dim formatter = New BinaryFormatter()
    Using stream = New MemoryStream(source)
        stream.Position = 0
        Dim obj As Object = DirectCast(formatter.Deserialize(stream, Nothing), [Object])
        stream.Close()
        Return obj
    End Using
End Function 
الرد }}}
تم الشكر بواسطة: kslawy , سعود
#5
بارك الله فيكم جميعا اخواني الاعزاء
اخي Aly El-Haddad بالنسبة للتنصت قد يكون نص وليست صورة فكيف افرق بينهما.
لاني الان اجرب بمشروع مستقل يعني ارسل صورة واتحقق كما تفضلت الامر هنا يبدو جيدا.
لكن كيف لو حبيت اضيف كود ارسال صورة الى المشروع الاساسي بحيث التنصت على المنفذ واحد اي مسموح باجراء واحد فقط.
ارسال الصورة بلا شك ليس مدموج وانما من زر امر مستقل.
ماهي الطريقة؟
ام انها تريد حيلة Smile
ارجو الرد فبصراحة استخدام التحايلات ليس جيد.
ايضا هل يمكن استبدال مربع الرسالة بنص عادي يتم رسمه على اداة الـ Richtextbox وحين الضغط على نعم يتم السماح.
.
.
بارك الله فيكم جميعا.
الرد }}}
تم الشكر بواسطة:
#6
(08-04-14, 01:08 AM)سعود كتب : بارك الله فيكم جميعا اخواني الاعزاء
اخي Aly El-Haddad بالنسبة للتنصت قد يكون نص وليست صورة فكيف افرق بينهما.
لاني الان اجرب بمشروع مستقل يعني ارسل صورة واتحقق كما تفضلت الامر هنا يبدو جيدا.

لكن كيف لو حبيت اضيف كود ارسال صورة الى المشروع الاساسي بحيث التنصت على المنفذ واحد اي مسموح باجراء واحد فقط.
ارسال الصورة بلا شك ليس مدموج وانما من زر امر مستقل.
ماهي الطريقة؟
ام انها تريد حيلة Smile
ارجو الرد فبصراحة استخدام التحايلات ليس جيد.
ايضا هل يمكن استبدال مربع الرسالة بنص عادي يتم رسمه على اداة الـ Richtextbox وحين الضغط على نعم يتم السماح.
.
.
بارك الله فيكم جميعا.


راجع ردي جيدا
الرد }}}
تم الشكر بواسطة: سعود
#7
اخي الشاكي بارك الله فيك اعلم انك انسان مبدع ومتبحر باي مجال تشارك به..لكن الاشكال عندي انه ليس لدي قدرة على فهم اكواد لغة اخرى غير فيجوال بيسك لكن باذن الله ساحاول معتمدا على مواقع التحويل
شكرا لك اخي
الرد }}}
تم الشكر بواسطة:
#8
(08-04-14, 01:50 AM)سعود كتب : اخي الشاكي بارك الله فيك اعلم انك انسان مبدع ومتبحر باي مجال تشارك به..لكن الاشكال عندي انه ليس لدي قدرة على فهم اكواد لغة اخرى غير فيجوال بيسك لكن باذن الله ساحاول معتمدا على مواقع التحويل
شكرا لك اخي

اسف يالغالي مانتبهت يوم حطيت الكود

حولت لك الرد الى الفيجوال بيسك
الرد }}}
تم الشكر بواسطة: سعود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تعديل كود ارسال صورة الى الواتس new_programer 2 114 21-03-24, 10:07 PM
آخر رد: new_programer
  [VB.NET] ارغب في كود إلزام المستخدم ادخال الأرقام محصور بعددين loay775 2 200 18-01-24, 05:02 PM
آخر رد: loay775
  [كود] ما الخطأ فى الـ Functions المستخدم فى vb.net 2010 AhmedEissa 9 501 21-10-23, 11:44 PM
آخر رد: Ahmed5
  إجبار المستخدم على إدخال عدد معين من الأرقام Ahmed.vb 6 656 20-10-23, 10:25 AM
آخر رد: atefkhalf2004
  [VB.NET] كيف اقوم بمنع المستخدم من استخدام الكيبورد وخصوصا مفتاح Print screen Ameenh 0 235 07-10-23, 10:45 PM
آخر رد: Ameenh
  استخدم هذه الطريقة فى التصدير الى اكسيل حماده ممدوح البحيرى 3 384 18-12-22, 10:20 AM
آخر رد: حماده ممدوح البحيرى
  [VB.NET] دخول المستخدم عبدالرحمن بشري عمر علي 0 331 14-12-22, 10:34 PM
آخر رد: عبدالرحمن بشري عمر علي
  كيف يمكن إدخال بيانات ( اسم المستخدم وكلمة المرور ) لملف مشاركة برمجياً. عبد الله 8 4,207 10-12-22, 04:00 PM
آخر رد: Calvinarins
  التحكم بالبرنامج ( عند المستخدم ) عن طريق برنامج اخر (تعديل - حذف - اضافه - تغير كود) mohamedallams 2 1,133 06-09-22, 10:32 PM
آخر رد: رضوان الجماعي
  وضع صورة كخلفية للبروقرس بار لكن!! سعود 1 572 27-08-22, 03:46 PM
آخر رد: DR.YASER

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم