بسم الله الرحمن الرحيم
المقدمــة :-
درس اليوم مره سهل و
ــ و بسيط و هو على فكره مقتبس من كتاب :-
وعلى فكره ترجمه الى اللغه الانجليزيه في احدى المواقع الغربيــة فاحبيت انقله لكم 
هو كيف تنقل صوره من جهاز الى جهاز اخرى في الشبكه المحليه Local Network
و لكن تستطيع ان تنقل الصوره عبر الانترنت برمجه السيرفر مع الماك ادرس MAC Address
ويسمى Wake On Lan ويستخدم فيه الماك ادرس للاتصال لمزيد من المعلومات الرجاء البحث 
العمل :-
الادوات المستخدمه في العمل ....
Visual Studio Team System 2008= عندي
1-VB.NET 2008 {.NET 2.0 & 3.0 & 3.5} Or VB.NET 2005 {.NET 2.0} Or VB.NET 2003 Or
انا استخدمت في هذا المثال = .NET 2.0
راح نسوي في نفس الجهاز تبعنا او تقدر تسوي على جهاز ثاني معاك في الشبكه بس انك تنقل السيرفر فيه
وتدخل الايبي تعب الجهاز الثاني في العميل عندك في جهاز او انك راح تطبق على نفس جهازك راح نستخدم الايبي
IP = 127.0.0.1 or Port 5002
1- New Project -----> Windows Froms Application -----> wherever name
راح نختار بعض الادوات من شريط الادوات ToolBox
I - PictureBox1 نغير الاسم الى PictureBoxforSend
II -two TextBox ===> TextBox1 نغير الاسم الى IP.Text & TextBox2 نغير الاسم الىPort.Text
III -2 Labe.Text نغير الاسم الى IP & Port
IIII -Button1 نغير الاسم الى Send My Picture
IIIII - OpenFileDialog1 ' علشان نفتحه ونحطه الصوره الي نبغاها
Client ( العميل )
اولا نستدعي في الاعلى خارج Public Form1
كود:
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
وبعد كده نتكب الكود هذا في زر ارسال الصوره "Send My Picture "
كود:
Try
'we use Try for Error
OpenFileDialog1.ShowDialog() ' here we want open file to see what pic we want to send
Dim MyImage As String = OpenFileDialog1.FileName() ' here we create varble for pic to set on Picture box = PictureBoxforSend
PictureBoxforSend.Image = Image.FromFile(MyImage) ' you can see we add pic to Picture
' now we will creat Memory Stream that will transport after change to Byets
Dim MY_MemoryStream As MemoryStream = New MemoryStream
PictureBoxforSend.Image.Save(MY_MemoryStream, PictureBoxforSend.Image.RawFormat)
Dim ArrImage As Byte() = MY_MemoryStream.GetBuffer ' here change it to Bytes
MY_MemoryStream.Close()
' here we will make connetion by IP and Port Using IP.Text and Port.Text
Dim MyClient As TcpClient = New TcpClient(IP.Text, Port.Text)
Try
Dim MyNETWorkStream As NetworkStream = _
MyClient.GetStream
Dim MyBinaryWrit As BinaryWriter = _
New BinaryWriter(MyNETWorkStream)
MyBinaryWrit.Write(ArrImage)
MyBinaryWrit.Close()
MyNETWorkStream.Close()
MyClient.Close()
Catch ex As Exception
'Connetion Error
' Note you Can Use One Try to Catch Error as you lik
MsgBox("Connetion Error" + ex.Message, MsgBoxStyle.Information)
End Try
Catch ex As Exception
'Image Error while get form you localhost into PictureBox
MsgBox("Image Error" + ex.Message, MsgBoxStyle.Information)
End Try
End Sub
Server (الخادم )
1- New Project -----> Windows Froms Application -----> wherever name
2 - PictureBox1
3 - MenuStrip
= وسمينا هذا خروج لما و نكتب في كود الخروج ExitToolStripMenuItem
وهذا سمينا حفظ علشان اول ما نضغط عليه راح نختار مكان الي نبغى نحفظه في الصوره الي رسلت
من قبل العميل SaveToolStripMenuItem =
4 - SaveFileDialog2 = علشان يفتح لك المكان الي نبغى للحفظ .
نفس الطريقه خارج الــ Public form1
نستدعي كل من :-
كود:
Imports System.Threading
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
بعد ما عرفنا داخل الفورام public form1
نعرف المتغيرات التاليه :-
كود:
' لفتح البورت في السيرفر Private MYTcpListener As TcpListener
Private MySocket As Socket
Private MyNetworkStream As NetworkStream
Dim MyThread As Thread
بعد كده علينا انشاء Sub علشاان نستقبل من العميل (client)
كود:
Sub MyImage_RECIEVE()
MYTcpListener = New TcpListener(5002)
MYTcpListener.Start()
MySocket = MYTcpListener.AcceptSocket
MyNetworkStream = New NetworkStream(MySocket)
PictureBox1.Image = Image.FromStream(MyNetworkStream)
MYTcpListener.Stop()
If MySocket.Connected = True Then
While True
MyImage_RECIEVE()
End While
End If
End Sub
بعد كده في مكان الي الحفظ نكتب الكود التالي وبعدها في form1 نضع الكود التالي وبعد ما يغلق الفورم
يغلق الاتصال معه :-
كود:
Private Sub SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem.Click
Try
SaveFileDialog2.Filter = " Save As ... (*.JPG)|*.JPG" ' you can Change it as you like
If SaveFileDialog2.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim MYIMAGE As String = SaveFileDialog2.FileName
PictureBox1.Image.Save(MYIMAGE)
MsgBox(" Done ................. ", MsgBoxStyle.Information)
End If
Catch ex As Exception
'To Catch any Error
MsgBox(ex.Message)
End Try
End Sub
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Try
MyThread.Abort()
MYTcpListener.Stop()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyThread = New Thread(New System.Threading.ThreadStart(AddressOf MyImage_RECIEVE))
MyThread.Start()
End Sub
Private Sub EixtToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EixtToolStripMenuItem.Click
End
End Sub
لتحميل السيرفر والعميل
ولكن للاسف ما كان عندي وقت علشان اترجمه للعربي ولكن سهل جداااا اتبع الشرح مع الامثال راح
تفهم اكثر و اي سؤال انا جاهز
الخادم
العميل