Professional Documents
Culture Documents
qader, Jordan
TCP/IP Programming
— ا اوTCP/IP اف ا
ت ووآل
With Microsoft Visual C# & VB.NET
ا
ا
ر ه ا
ا ة اب وإ ا Mobile : +962796284475
ُPhone: +96265055999
#* ا)' (' !&ت اوت ﻥ+ اروس ا ! آ ﺱ
ف E-mail: fadi822000@yahoo.com
Mobile : +962796284475
ُPhone: +96265055999
E-mail: fadi822000@yahoo.com
BOX: 311 Mail Code 11947 Tariq—Amman—Jordan
1
:*ا
ﺩ
"!ام ت اوت#$ ت%&'*)( ا+&$ (,-."/ر ا1*2 ا3"ب أه%ا ا7 ه89:;
م,"/> إ< ا#1"/&"ئ إ< ا/ى ا1"ﺱ/ اB* C$ D,":; ﺱ> إذ$ﺱ و-# ب1-#G$
ت,&OP وTCP/IP Models BK (*K (*,/$ "ب% و ;&أ ا، I"/* وD/H ب1-#G$
Socket BK DST* ح+V <-K ي1" و;ﺡ/ت اوت آ- "!ام#$ Client/Server
"!ام ال#$ (*,"* (/^ء أ:$ وNetwork Layer Protocols والProgramming
BK 3%( ا"ﺡ/^ وأRemote Desktop *)ت ال+$ات و+/Pa/( ا/^G آMulticasting
Application Layer ت الe1آ1P+$ 3ه2 DST* ح+V <-K ي1" و;ﺡ/ آ، ه+d و.$
Ik;( وو/ق اﺡ+m BK DST* ح+V ا+j وأ، ت%&'*)ت ا+$ gh iP*"!ا#وا
... ت%&'*)ت ا+$ gh ت#ﺡت واﺱoSا
:اهﺩاء
... 3. أﺡء اI/H gh ب+. اB)*+&/ب واoO"ب إ< ا%ا ا7اهي ه
2
:1ر.ل ا او وا ا./0 ا-*
:ا او
Chapter 1: An Overview on Networks & TCP/IP Programming
:1ر.ا ا
(uou B* ن1%"P إذ، ت ا);ةhks اB* +t%< ا-K (9ر1ﺱ!( ا:ي ا1"ﺡP ف1#
:g-; /اء آwHأ
I/H وJava والC++6 والVB6 الg)*+&/ 3i* :B-Sh B* ن1%"; و:ول2ء اw)ا
إ< اوتB-,":/ اB)*+&/ا
Part 1: Preparation to Dot Net
Chapter 2:ADO.NET
(*,"/ت ا%&'( ا/^ء أ:$ ف+" اﺡ:ل1Sh (/u B* ن1%"; و:3ء ا2 ا
ت اوت:,P "!ام#$
Part 2: .Net Networks & TCP/IP Programming
. "!ام اوت#$ ت%&'( ا/^< أ-K (-/K I;ت و*'ر,&OP :43ء ا2 ا
... وا
=ر;< ا
?و> اب3* ا5# ي. ;ﺡCD 5 إ7
3
:;ت او.س ا
ﺡC
F. Stream Classes
G. Stream Members
H. Stream Manipulation
I. Simple Remote Control Application Using StreamReader &
StreamWriter Classes
A. Socket Programming
B. Socket Class Members
C. TCP & UDP Classes Members
D. Asynchronous Sockets
4
Chapter 5: Application Layer Programming …………………………… Page 98
A. DNS Programming
B. SMTP Programming
C. POP3 Programming
D. HTTP Programming
E. Web Services & XML Programming
F. FTP Programming
5
Dot Net Networks & TCP/IP Programming
Chapter 1
An Overview on Network &
TCP/IP Programming
6
\>\ ا[ ا>
] ا
7
< إASCIIEncoding Class "!ام ال#$ ﺹ:( آ$1"%/( ا#+ اD;1ﺡP (,;+m B&Pو
: Byte Array
C#
String str=Console.ReadLine();
ASCIIEncoding asen= new ASCIIEncoding();
byte[] ba=asen.GetBytes(str);
VB.NET
Dim str As String = Console.ReadLine
Dim asen As ASCIIEncoding = New ASCIIEncoding
Dim ba As Byte() = asen.GetBytes(str)
ت,&m (uou < إupper Layers ال3ﺱ,P 3P OSI ذج1/ gh
User Interface </ﺱﻩ أو * ;ﺱT *+& اI* D*." Application
< ا&ت إD;1"ﺡ$ ,$# ت+i / آg( وه-#+/ ا&ت اDt/P Presentation
. ASCIIال
"h ).& ا3i.&$ ;+." و اB;زi) اB$ m!"( ا-/.$ ا&ءih وSession
… ((ﺱ-)ا
ت,&O اD/.$ م1,P g" واApplication (,&m د1H1$ T"%h TCP/IP ل ال1آ1Pو+$ gh *أ
ات1Oj ة.$ (ﺱ-)" اhف و+." ا3"; session Layer gh ، OSI gh <و2ث اotا
: g-; / آgوه
;ﺡP .$ Cﺡد وذ/ اPort و الIP ال+&K server زi)$ g&/ل اSPeاء ا+H إ-1
TCP +&K أوUDP +&K اء1# لSPe( ا-/K
C ذServerز الiH -OP إذاAuthentication الD/Kﺱﻩ وT:$ ;+." ا-2
ihﺱ( أو ر-)" اh <-K (,hا1/ل ا#ر $ C ذ3";ﺱ( و-) اhل أو ر1&9 -3
*+&$ ا!صPort< ال-K Listening D/.$ Serverم ال9ﺱ( و-)أ ا$ -4
D#+/ز اiH م1,; m!"( ا-/.$ ﺱ( وا&ء-)" اh <-K (,hا1/ ا3"; *:K
7 هgh وTransport (,&m : هgى وه+j2( ا,&O( إ< ا#+ اD/"ﺡ$ Client
ال+&K أوConnection Protocol - TCP +&K اء1# لSPe( ا.&m ;ﺡP 3"; (,&Oا
/ وهBh+m ;ﺡP 3"; ول2ل ا1آ1Pو+& اgTh UDP - Connectionless Protocol
وD#+/ف ا+Oﺡ; اP 3"h UDP ل أ* الSPe اPort وD&,"ﺱ/ واD#+/ا
(:.* (iH ;ﺡP ون$ Broadcast الD/K B%/; "ري( أي اﻩj )اD&,"ﺱ/ا
8
IO" ;ﺱListening Portا ال7 ه+&K :S"$ م1,; !ﺹV ( أي أن أي#+&ل ا,"#e
: TCP Protocol "!ام ال#$ (,&O ا7 هD/K k1; لt* : وه، (#+&ل ا,"#ا
C #:
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect("192.168.0.2",8001);
VB.NET:
Dim tcpclnt As TcpClient = New TcpClient
tcpclnt.Connect("192.168.0.2", 8001)
:g" اD%' اgh k1* 1 ه/ آTCP الgh ل1ﺹ1 اB* ¨,( ا"ﺡ-/K 3"Pو
ih +&!; D#+/ إ< اAcknowledgment ل رد# إر3"; ل#( إر-/K D آgh إذ أﻩ
3P ي7 اPacket ال39 رAcknowledgment Header الgh D#+; و،(#+ل ا1ﺹ1$
.ACK ID < ال/)ح و;ﺱ:$ &ﻩ,"#ا
(-/. ا7i$ م1,; wهH Class اوتgh ( ﺱ"!م%&' ا+&K (#+ل ا#رsو
ل#ل وإرSPe( ا-# وI* D*." اBK ل1«ﺱ/ ا1 وهNetworkStream </و;ﺱ
ﺱﻩT Socket "!ام ال#$ أو، Stream Data D%'$ g:./ف ا+O( إ< ا#+ا
:C< ذ-K لt/¬( وآt اDST ا+^)ا
9
C#:
NetworkStream mynetsream = tcpclnt.GetStream ();
StreamWriter myswrite = new StreamWriter (mynetsream);
myswrite.WriteLine("Your Message");
VB.NET:
Dim mynetsream As NetworkStream = tcpclnt.GetStream
Dim myswrite As StreamWriter = New StreamWriter(mynetsream)
myswrite.WriteLine("Your Message")
D#+/ان ا1:K Ik( وو#+( ا1:K 3"P إذNetwork Layer < إ3-ﺱP C ذ.$و
Physical Tunnel ال+&K i# إر3" <د2( ا,&O إ< ا3-ﺱP وi-K D&,"ﺱ/وا
... IP,IPv6,ARB-Address Resolution Protocol i-K (-t*2 اB*و
B%ت و,&Oﺱ اT <-K ور+/$ م1,h Server الD&,"ﺱ/ز اi)- (&ﺱ:$ *أ
3u Network 3u Data link <ل إ1 "ﺡBits ( ال%&'ت ا+ آ3-"ﺱ ﺡ¬ ;ﺱ%.$
.. Text < إASCII B* وASCII < إBinary B* ل1ﺡP i:* وApplication 3u Transport
: Server الD/K *&أk1; د1% ا7وه
C #:
TcpListener myList=new TcpListener("127.0.0.1",8001);
myList.Start();
Socket s=myList.AcceptSocket();
byte[] b=new byte[100];
int k=s.Receive(b);
for (int i=0;i<k;i++)
Console.Write(Convert.ToChar(b[i]));
s.Close();
VB.NET:
10
Connectionless Sockets Via UDP : 1.2
TCP ل ال1آ1Pو+$ أن:$ وTCP – Connection Oriented Protocol الBK ,$# :uﺡP
ان1:K <-K ﻩ$ ا!صHeader اء ال1"م اﺡw-; اﻩg:.; ا7ﻩ وهH1* ل1آ1Pو+$ 1ه
وAuthentication ¨,ت ا"ﺡ-/.$ م,م أ; اw-; / آD&,"ﺱ/ان ا1:K وD#+/ا
D%'$ 3- و ا"ﺱAcknowledgment "!ام ال#$ ل1ﺹ1 اB* ¨,ت ا"ﺡ-/K 3K;
م1,; أنC)*+$ B* ;+P إذC (&ﺱ:$ 3i* +d C ذD آن آ1 *ذاB% .... ﺡSا
( و أن#+ ا3-"ف ;ﺱ1# B* C/i; e وC"#+ Broadcast gK¬ إذا$ (-/.$
ل1آ1Pو+$ ك+P C-K H إذا وg##2ف اi اg&ل ه,"#eل و ا#رs اgh (K+اﺱ
ل$ ;< أ/ و;ﺱUDP User Datagram Protocol ال1ﻩ ﺡH1" واTCP ال
ل$ </ * ;ﺱD/K IO"ﺱP ل1آ1Pو+&ا ا7 هgh Connectionless Protocol
<ل إ#رs اg:.;-Multi وD%ل إ< ا#رs اg:.;-Broad) Multicast و الBroadcast
B.$ 7jGP م أنw-; ط وﺡ+V H1; (>,h اﺡ1 ل#رs اg:.;-Uni( والK1/)*
g"( ا%&' أن ا1 وهBroadcast "!ام#$ ¬&( ا-/. UDP "!ام ال# ا:K "&رKeا
Router د1Hون و$ أيDirect Connection +V&* D%'$ i.* DS"P i ¬$ D/K ;+P
¬ ﺡBroadcast gKذاsت ا&¬ ا-/K I:/; Router إذ أن الD&,"ﺱ/ اB$ وC:$
وف أن ال+./ اB* و، C أوB أوA اء1# Range Class الB/k (%&'ن ا1%P م أنw-;
D ﺹS!* gt واNetwork (%&' ﺹS!* ول2 اBwH < إ3ﺱ,* IP Address
:g" اD%' اgh k1* 1 ه/ وآHOST
:g-; / آC ذ3"; Address : 10.0.0.0 – 255.0.0.0 إ< الBroadcast D/. ot*
<,&; و;) أنNetwork ID الg( ه10) <و2 ﺡ¬ أن ا!( ا10.255.255.255
ل$ ( ا!ت ا!ﺹI/H gh 255 الIk1; و1 ه/ آNetwork ID ل$ ء ا!صw)ا
...HOST ID
11
و الSystem.Net Name Space ;+.P eم أوw-; اوتgh UDP "!ام ال#e
زi)- ان1:. واPort ال39; ر+.P مw-; آنTCP الgh ﺡ¶ اﻩe System.Net.Socket
D/K IO"ﺱP و/ آTCP gh 1 ه/ﻩ آT;+.P IO""ﺱh UDP الgh * أD&,"ﺱ/ا
IPEndPoint سo% اB* Bق آ,"V ا.$ IPAddress.Any "!ام#$ Broadcast
Method "!ام ال#$ Port ال39ﺡ; رP مK ; أIO"ﺱPف( وi( اO, g:.P)و
... 0 بiT;+.P 3"; ¬ ﺡBind
ا7 ه+&K (#+م اo"# ا3u i-K :S"وا5020 Port" الh 3"; g"ل اt/ اgh
Port< ال-K i/-ﺱP 3"; ¬ ﺡPort ال39ﺡ; رP ون$ D%< ا-K i.;ز1P وPortال
:+T ﺹPort ال1 وه#ود آ+&( ا-/. ﺹS!/ا
C #:
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 5020);
VB.NET
Dim ipep As IPEndPoint = New IPEndPoint(IPAddress.Any, 5020)
VB.NET
Dim newsock As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp)
VB.NET:
newsock.Bind(ipep)
Port< ال-K Server الI* DS"; B* D إ< آit$ ;+( و#+&ل ا,"# ا3P نºا
: g-; /ف آi( اO, ;+.P eم أوw-; C ذD/.( و,$اﺱ
C #:
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
12
VB.NET:
Dim sender As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim Remote As EndPoint = CType((sender), EndPoint)
(#+ل ا# إرg:.; ا7 وه+T ﺹPort ال39 ورAny 1ف هi( اO, ان1:K ﺡ¶ أنe
Server( و ال#+ اD#+* ا'!ﺹ3ih /$ وD%( إ< ا/-"ﺱ/ا
:(%&' ا+&K ى+jة أ+* Server إ< الServer الB* (#+م اo"# ا3"; :ه
C #:
recv = newsock.ReceiveFrom(data, ref Remote);
VB.NET:
recv = newsock.ReceiveFrom(data, Remote)
VB.NET:
Console.WriteLine("Message received from {0}:", Remote.ToString)
Console.WriteLine(Encoding.ASCII.GetString(Data, 0, recv))
اﻩi$ +&! Server< ال-K C&'; ;H زiH D% (&ﺡ+P (#ل ر#ر $ :م ه1,
:ةwiH2 اB/k ﻩ1j< د-K (,hا1/ ا3P
C #:
string welcome = "Welcome Customer ...";
data = Encoding.ASCII.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
VB.NET:
Dim welcome As String = "Welcome Customer ..."
Data = Encoding.ASCII.GetBytes(welcome)
newsock.SendTo(Data, Data.Length, SocketFlags.None, Remote)
أيD&9 B* 9 أي وgh (#&ل أي ر,"# ا:K 1ﻩ ه:* فi اInfinity Loop :ه
إذا أردت... (%&'< ا-K 1 هB* D إ< آi/-ﺱP وi*o"#$ Serverم ال1,; زiH
< إinfinity loop الgh True +P IO"ﺱP (/-"ﺱ/ اD#+ اB* B.* دK ;ﺡP
..;+P 39أي ر
13
C #:
while(true)
{
data = new byte[1024];
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);
}
server.Close();
VB.NET:
While True
Data = New Byte(1024) {}
recv = newsock.ReceiveFrom(Data, Remote)
Console.WriteLine(Encoding.ASCII.GetString(Data, 0, recv))
newsock.SendTo(Data, recv, SocketFlags.None, Remote)
End While
server.Close()
ل1ﺹ1 ا3"; B وInfinity Loop B* وج+! ا3P ﺡ( إذاgh Socket ق الod إ3"; :ه
ط+V ¨h وInfinity Loop الB/k Break Ik1$ "ﻩ.m,* 3P إذاe( إO,: ا7إ< ه
Loop B* وج+! ا3"# (:.* (#( أو ﺹ ر#&ل ر,"# ﺡ( اgh أي اﻩB.*
/ آ.$ BK Server ق الod إIO"ﺱP C اg:.; ا7 وهSocket ق الod إ3"#و
B.* ﺡ( ورود ﺹgh Server< ال-K ي7T:P -* أيD'P (-/H Ik وC:%/;
. ا7%وه
C#:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class SimpleUdpSrvr
{
public static void Main()
{
int recv;
byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 5020);
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
newsock.Bind(ipep);
Console.WriteLine("Waiting for a client...");
14
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}:", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
string welcome = " Welcome Customer ...";
data = Encoding.ASCII.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while (true)
{
data = new byte[1024];
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);
}
}
}
VB.NET:
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Class SimpleUdpSrvr
newsock.Bind(ipep)
Console.WriteLine("Waiting for a client...")
Dim sender As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim Remote As EndPoint = CType((sender), EndPoint)
recv = newsock.ReceiveFrom(data, Remote)
Console.WriteLine("Message received from {0}:", Remote.ToString)
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv))
Dim welcome As String = " Welcome Customer ..."
data = Encoding.ASCII.GetBytes(welcome)
newsock.SendTo(data, data.Length, SocketFlags.None, Remote)
While True
data = New Byte(1024) {}
recv = newsock.ReceiveFrom(data, Remote)
15
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv))
newsock.SendTo(data, recv, SocketFlags.None, Remote)
End While
End Sub
End Class
I* (ﺱ-H 'ء $ Client م ال9 <-K : هD/. ا+S",; ، Client ل$ ء ا!صw)ن اºا
أنe¨ إ$ اﺱgh 3P / وآPort ال39 ورIPEndPoint ل$ ﻩT;+.P .$ C وذServerال
ل# وإرServer الB* (#+&ل ا,"#< ا-K >,h +S",; ( إذاT1 اgh 1ف هo"jeا
: g"د ا1% ا+^( ا-/. ا7i$ م,- ﺹS!/ اPort ال+&K ﻩ ﻩ#أي ر
C#:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class SimpleUdpClient
{
data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ipep);
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)sender;
16
input = Console.ReadLine();
Exit "ﺱ( اآ-)ء اi ﺡ( إذا أردت إgh
if (input == "exit")
break;
server.SendTo(Encoding.ASCII.GetBytes(input), Remote);
data = new byte[1024];
Console.WriteLine("Stopping client");
server.Close();
VB.NET:
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Class SimpleUdpClient
17
' break
End If
server.SendTo(Encoding.ASCII.GetBytes(input), Remote)
data = New Byte(1024) {}
recv = server.ReceiveFrom(data, Remote)
stringData = Encoding.ASCII.GetString(data, 0, recv)
Console.WriteLine(stringData)
End While
Console.WriteLine("Stopping client")
server.Close()
End Sub
End Class
ق+T ا:$ وUDP Connectionless Protocol الI* D*."( اTء آw)ا ا7 هgh :$
... TCP Connection Oriented Protocol B$ﻩ و:$
18
Streaming & Threading Overview: 1.3
gh ت,&O ا7 هI* D*."( اT آ:$ وTCP/IP وOSI اءwH< أ-K ,$# :h+.P
Stream Library الI* D*."( اT آB& ف1# ءw)ا ا7 هgh و، ت%&'*)ت ا+$
...(%&'*)ت ا+$ gh Thread "!ام ال#( إ< اhks$ Binary Data ل#رs
ioj B* ا&تD, 3"; g"داة ا2 اg هSocket أن ال,$# :-9 Socket : ال: eأو
¬ ﺡSystem.Net.Sockets ;+.P (; ا&اgh مw-; i*"!ا#e و+jز إ< أiH B*
i*"!ا# ا3"; g" واClasses الB* 3!k دK <-K Namespaces ا ال7ي ه1";ﺡ
.¬t اDST ا+^( ا%&'*)ت ا+$ gh
B* D*."( اT آ,$# :$ ¬ﺡ، Object أوText D, B* Stream Classes الC:%/;
ءw)ا ا7 هgh وStream Writer والStream Reader "!ام#$ Text D,: Socketال
رة1ن ﺹ1%; أنB%/; ا&ت وB* +jع أ1 )أيObject D,: ﻩ.* D*."( اT آB&:#
1 ه/ وآ،(.. Binary Data <ل إ1 أن ;ﺡB%/; +jÀ ءgV أو أيVoice ت1 أو ﺹImage
Object gh * أBinary < إ3u ASCII Code< إText ل1 ﺡ: آText الD, gh اﺡل
Name B* iل إ1ﺹ1 ا3"; g" واStream Classes "!ام ال#$ ﻩ.* D*." ا3"h
Binary و الBinary Reader< ال-K Classes 7ي ه1"ﺡP وSystem.IO Spaces
Stream والStream Reader والObject أيI* D*." اB* C:%/P g" واWriter
I* D*." اDi "ﺱFile Stream والText الI* D*." اB* C:%/P g" واWriter
¶ ا&تT ﺡBuffer ﺱ"!م كP g" واMemory Stream ( إ< الhks$ تT-/ا
.gt اDST ا+^ اi&,"# ا.$ أوi# إرD&9
Binary "!ام ال#$ Binary < إObject أيD;1ﺡP <-K (&"%/ ا7ك هKﺱP ¬ﺡ
ى+jة أ+* ﻩ-;1ﺡP 3u Network Stream "!ام#$ (%&' ا+&K ﻩ# إرDi "ﺱWriter
ء:&$ م1, ف1# ا7< ه-K g,&OP لt/ وآ، Binary Reader "!ام#$ Object <إ
'ء $ 39 &ء- وClient/Server +jز إ< أiH B* Image D, (-/.$ م1,; *+$
: g" اD%' اgh /; آH وع+'*
19
:(" اNamespaces ( الhk $ 39 (; ا&اgh
C #:
using System.Net.Sockets;
using System.IO;
VB.NET:
Imports System.Net.Sockets
Imports System.IO
MemoryStream سo% اB* Instance ق,"V اB* e أو$ e ل#رs( ا-/K اء+HÁ
,ﺡe i1 ﺡg% 9a* D%'$ ة+اآ7 اDjرة دا1S اB;w!" i*!"ف ﺱ1# g"وا
< إSocket ال+&K NetworkStream "!ام#$ i# إر3u Binary (h1TS* <إ
:Serverز الiH
C #:
try
{
رة1S$ ﺡ; ا&ث ا!صP
openFileDialog1.ShowDialog ();
string mypic_path =openFileDialog1.FileName ;
pictureBox1.Image = Image.FromFile(mypic_path);
20
VB.NET:
openFileDialog1.ShowDialog
Dim mypic_path As String = openFileDialog1.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(txt_host.Text, 5020)
C #:
Serverز الiH <( إw!/رة ا1Sل ا#إر
NetworkStream myns = myclient.GetStream ();
BinaryWriter mysw = new BinaryWriter (myns);
mysw.Write(arrImage);//send the stream to above address
}
catch (Exception ex){MessageBox.Show(ex.Message );}
VB.NET:
Try
Dim myns As NetworkStream = myclient.GetStream
Dim mysw As BinaryWriter = New BinaryWriter(myns)
mysw.Write(arrImage)
mysw.Close
myns.Close
myclient.Close
Catch ex As Exception
Msgbox(ex.Message)
End Try
21
C #:
using System.Net.Sockets ;
using System.IO;
// Objects Declaration
TcpListener mytcpl; // Declare TCP Listener
Socket mysocket; // Declare an object from Socket Class
NetworkStream myns; //
StreamReader mysr;
void Image_Receiver()
{
while (true)
{
Image_Receiver();// Back to First Method
}
}
}
VB.NET:
Private mytcpl As TcpListener
Private mysocket As Socket
Private pictureBox1 As System.Windows.Forms.PictureBox
Private mainMenu1 As System.Windows.Forms.MainMenu
Private menuItem1 As System.Windows.Forms.MenuItem
Private saveFileDialog1 As System.Windows.Forms.SaveFileDialog
Private myns As NetworkStream
Sub Image_Receiver()
mytcpl = New TcpListener(5000)
mytcpl.Start()
mysocket = mytcpl.AcceptSocket
myns = New NetworkStream(mysocket)
pictureBox1.Image = Image.FromStream(myns)
mytcpl.Stop()
If mysocket.Connected = True Then
While True
22
Image_Receiver()
End While
End If
End Sub
VB.NET:
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs)
Try
mytcpl.Stop()
Application.ExitThread()
Application.Exit()
Catch ex As Exception
Msgbox(ex.Message)
End Try
End Sub
..، *+&ء اi إ:K Socketق الod إB* آG" Cوذ
23
:(-&,"ﺱ/رة ا1S اB;w!P B* B%/"P g% Save Button إ< الg"د ا1%( اhk $ 39
C #:
try
{
VB.NET:
Try
saveFileDialog1.Filter = "JPEG Image (*.jpg)|*.jpg"
If saveFileDialog1.ShowDialog = DialogResult.OK Then
Dim mypic_path As String = saveFileDialog1.FileName
pictureBox1.Image.Save(mypic_path)
End If
Catch generatedExceptionVariable0 As Exception
End Try
: Threading Overview
Loop * واﺱ& أن ال+&¨ ا-.P < إ:.kي و7 واInfinity Loop دي الa; ف1#
.$ eء إgV 7T:; B إذForm D (SS!/ واGlobal Area ( ال,O:* <-K D/.;
D اوت اﺡ: *9 ، Infinity Loop ا إذ اﻩ$ ;ﺡث أB * 1 وهLoop ء الi"ا
()./$ /ﺱP g" واThreading الH11:%P "!ام#$ g( وه-%'/ ا7i
D/K و./< ا-K مi/ ا3ﺱ,P لoj B* C وذ./ﺱ اT <-K (;از1"/ا
*+& ا+ua; e : وه..Multitasking ل$ </ * ;ﺱ1* وه+$ D% (-ST:* Session
الBK DST:* Thread gh D/."# Loop أن ال/ آ+& آD%'$ ^م:ارد ا1* <-K
: g" اD%' ا+^ اForm ل$ ا!صThread
24
1ا ه7 وهGlobal Area ( ال,O:* <-K D/.; Loop آنThread ( الhk إD&9 ﺡ¶ اﻩe
¬ﺡ$ Loop D صj Session D/K 3P Thread "!ام ال# ا.$& ا&>ء ا'; و#
.. *+& اI* ازي1"* D%'$ D/.;
C #:
using System.Threading;
VB.NET:
imports System.Threading
الgh i Thread D/K ;+P g"د ا1t/ ا3#ﻩ وإدراج ا:* Instance ق,"V ا3u
: g-; / آi$ ا!صDelegate
C #:
Thread myth;
myth= new Thread (new System.Threading .ThreadStart(Image_Receiver));
myth.Start ();
VB.NET:
Imports System.Threading
25
C #:
private void Form1_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
try
{
mytcpl.Stop ();
Application.ExitThread ();
Application.Exit();
}
catch (Exception ex) {MessageBox .Show (ex.Message );}
VB.NET:
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs)
Try
mytcpl.Stop()
Application.ExitThread()
Application.Exit()
Catch ex As Exception
Msgbox(ex.Message)
End Try
End Sub
91ﺱ اT gh وThread B* +t أآD'P B* C:%/P ا إذH (. راThread ة الw*
ﺡﻩ+V <-K gPÇ# ي7 واMultithreading ل$ </ * ;ﺱ1* وه+&ﺱ اT ghو
."ب% اB* (9ر1ﺱ!( ا: اgh DST"$
26
Multicasting Group o
ﻉC*ﺩاp واIP Multicasting :1.4
¬ ﺡ#ود آ+$ D/. "!ا*ﻩ#( اT آ:ﺡ+V وUDP ل ال1آ1P+$ BK ,$# :uﺡP
*ﻩw-; ي7 واIPAddress.Any "!ام#$ * إB",;+O$ #ود آ+& اD/K IO"ﺱP
ﻩ أيoj B* D&,"ﺡد ﺡ¬ ;ﺱ/ اPort< ال-K :S"( ا-/.$ م1,; Server د1Hو
B* ي7 واIPAddress.Broadcast "!ام#$ ة أوwiH2 اD إ< آit&$ م1,; 3u (#ر
ﺡ¬ أن$ Server زiH د1H1 ورة+k e ¬ة ﺡwiH2 اD¬ إ< آ$ D/K B%/; ﻩoj
<( إ# أي رioj B* D#+; وD&,"ﺡد و ;ﺱ/ اPort < ال-K :S"ﻩ ا:%/; D%ا
I/" ;ﺱI/) ﺡ¬ أن اgKذاs( ا&¬ ا-/K Broadcast ( ال-/K '&ﻩPة وwiH2 اDآ
); ه:K تK1/)* <ل إ#رs ا3ﺱ,P أ* إذا أرد، D% إ< اD#+; وD% اB*
، Multicast Group الD/. "!ا*ﻩ#ف اi$ C وذIP Multicasting "!ام ال#ا
ﻩSSj ا7iت و%&'*)ت ا+$ gh اH (/i/ اIkا1/ اB* ع1k1/ا ا7 ه+&".;
Conferences *)ت ال+$ -d( إذ أن اI$ا+ اDST ا+^( )ا,& اBK DST:* DSh
B* (K1/)* <ل إ#رs< اﻩ ا-K Multicast ف+.; و+& آD%'$ ﻩ-K /".P
زiH C:ن ه1%; ¬ ﺡClient/Server "!ام#$ Managed اء آن1# B*!"ﺱ/ا
< إi# إر3u Clients Group الB* D#+&ل ا,"#"ﻩ اT( و%&' اgh Server
: g" اD%' إ< ا+^ى ا+jة أ+* (K1/)/ اD*آ
¨h وإذا واClients الD&9 B* (K1/)/م إ< ا/e ا-m ل# إر3"; ﺡ¶ اﻩe
ﻩ$ ( ا!ﺹIP Address List ز إ< الi)ان ا1:K 3$ م1,; -O< ا-K Serverال
ءK أI/H <ل إ#رs ا3"; وIP Multicast ﺱ الT:$ (K1/)* Dك آ+"'Pو
B$* 1 وهClass D الB/k I,; ي7 واIP Multicast الgT:$ ك+"'P g"( اK1/)/ا
.,$#
27
IP Multicast Address ل$ </ * ;ﺱ1 وهMulticasting D (ﺹj B;و:K ﺹS!P 3P
: g-; / آgوه
¬ ﺡSocket Namespace "!ام ال#$ IP Multicast D +& آ3K* اوت د9
ت-/K دارة $ م1,P g" واSetSocketOption د1t/"!ام ال ا#$ iT;+.P 3";
ﺱ"!مP / ( آleave & join) multicast group (K1/)/ وا< اB* وج+!م وا/eا
و ;ﺱ"!م الDropMembership وAddMembership (;1.( وإء اhks
ﻩoj B* &ل ا&ت,"# ا3"# ي7 واPort ال39 "ﺡ; رUdpClient Object
ف1# g"ت اi)ﺡد اP ﻩoj B* ي7 واIP Multicasting ; ال+.P <( إhks$
¬ ﺡLAN (-ﺡ/ت ا%&'$ ا!صRange IP ﺡ; الP لoj B* (#+ اD&,"ﺱP
IP Multicast ﺱ الT و;ﺱ"!مPortا ال7< ه-K S:"; !ﺹV أيIO";ﺱ
¬ﺡ$ تiH ةK <( إ#ل ر#رs g"د ا1% ;ﺱ"!م ا، (#+ ا7&ل ه,"#ا
:لt/ آ224.100.0.1 Group الB/k و5020 Port ال39ﺱ"!م ر
C #:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class MultiSend
{
public static void Main()
{
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"),
5020);
byte[] data = Encoding.ASCII.GetBytes("This is a test message");
server.SendTo(data, iep);
server.Close();
}
}
28
VB.NET:
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Class MultiSend
g( وه#+ اD&,"ﺱP ف1# g"( اi)"ﺡ; ا$ Socket; ال+."$ :/9 (; ا&اgh
;ﺡP 3u (ﺡد/ اIP Multicast Group "!ام ال#$ (%&'< ا-K S:"; !ﺹV )أي
IP الIk1$ Cف وذi( اO, ;ﺡP C ذ.$ و، ﺱ"!م/ل ا1آ1P+& واSocketع ال1
:ﻩoj B* &ل ا&ت,"# ا3"# g" اPort ال39ﻩ ر.&";; و+ ي7 اMulticast
ﺱﻩ و الT Socket ; ال+.P ف ﺱ"!م1# &ل,"#e* ا+$ 'ءsو
:ﻩ-K :S"; ا+ g" اPort ال39 ﻩ ر: وﺱUdpClient Object
C #:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class UdpClientMultiRecv
{
public static void Main()
{
UdpClient sock = new UdpClient(5020); // ال39< ر-K :S"اPortا7ه
sock.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50);
ﺡد/ى ا/< ا-K :S"P ف1# C اg:.; ا7وه
29
VB.NET:
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Class UdpClientMultiRecv
B;د1%"!ام ا# اB%/; / آi#&ل ا&ت و إر,"#e دة."* ق+m H1P ﺡ¶ اﻩe
< إImage ل# إرC:%/; /&ل آ,"#eل و ا#رÁ *+&ﺱ اT gh B,$اﺱ
C-K * إذBinary <ﻩ إ-;1ﺡP B%/; +jء أgV ( أو أيI$ا+ اDST ا+^ﺹ ) ا: اH
< إBinary Writer والBinary Reader والmemory Stream ( الhkى إ1#
تiH <ا إ+*% ا+&K رة1ل ﺹ#رs *+$ D/K C:%/; /&ل آ,"#eل و ا#رsد ا1آ
... I$ا+ اDST اgh iﺡ+V <-K gPÇ# g"ﺱ ا!ﺹ( واT "!ام#$ دة."*
30
Dot Net Networks & TCP/IP Programming
Chapter 2
Streaming in Dot Net
A. Stream Classes
B. Stream Members
C. Stream Manipulation
D. Simple Remote Control Application Using
StreamReader & StreamWriter Classes
31
\>\ ا[ ا>
] ا
Streams Library "!ا*ت ال# اBK مK D%'$ ول2ء اw) اgh ,$# :uﺡP
ل#ر $ :/9 لt/ وآ+jÀ <ز إiH B* Text Data وBinary Data ل#رs i*"!ا#وا
.. Binary Reader & Binary Writer "!ام ال#$ Server إ< الClient الB* رة1ﺹ
<ن إ%* B* ا&تD, (-/K DiﺱP 1 هStream "&ت ال%* إ'ءB* فiإن ا
ت أوT-/ اI* D*."$ اﺡل1 ه/ز آi)ﺱ اT Dj( أو دا%&' ا+&K اء1# +jأ
:-K DiﺱP ¬ ﺡ+P1&/%$ ل1ﺹ1* +jÀ زiH ( أوh+m ( أو أي.$O اI* D*."ا
آg" اD'آ/ اB* +t% اD * ﺡ1 وهi# وإرByte Array < إi-;1ﺡP (-/K
.. Binary Data I* D*." اgh B)*+&/ﻩ اHا1P
B*اw"* + واSynchronous B*اw"/ اB$1-#G$ Stream الI* D*." اB%/;
B*اw"/ب ا1-#2$ IO Streams الI/H D/.P gkا+"h اD%'$ وAsynchronous
Processing ق الod $ م1,; ^م إذ:< أدا( ا-K ;' ا+uGP 1ﻩ هh . اBآe
.$ e إ+jÀ +* أي أ7T:"$ / ;ﺱe ¬ﺡ$ *+&- (SS!/ اThread الgh Unit
: ﺡ( إذا آgh B*اw"/ب ا1-#2"!ام ا# اÀ$ اS:; e( ا)ر;( و-/. اB* ءi"eا
Magnetic Tape أو الFloppy Disk الDt* &«( ﺱO$ ($"اءة وآ+9 ةwiH أI* D*."P
Real Time أو الg,, اﺡB*w( ا/^< أ-K /".P g"*)ت ا+&$ اH (/i* i:%
1&ل ا&ت وه,"#ل وا#( إر-/K gh B*اw"/ب ا1-#2 ا/".P i ﺡ¬ أSystems
i-K (-t*2 اB* و+*2 ا7T:P B* ءi"e اBى إ< ﺡ+j( أ-/K يG$ م, اI:/; *
(9O$ BﺡV أو+اآ7" اw)( ﺡ/^ أو أg%:&ﺹ ا+ اgh ;اعs( اﺱﺡ أو ا/^أ
(,$اص اﺱ1!د ا1H ;ﺡ"ج إ< وe C)*+$ ﺡ( إذا آنgh .&m .. ه+d وPiا
B* IO"ﺱP ¬ ﺡAsynchronous B*اw"* +ب ا1-#2"!ام ا#$ S:; ه:K
(-/.ء اi"^ر إe (Hون اﺡ$)( و./ وﺡة اgh ى+jت أ-/K 7T:P ﻩoj
+ua; e /* اج+jل أو إj إد-m (-/K D% Separate thread إ'ء3"; ا)ر;( إذ
لoj B* ى+)P ($"%اءة أو ا+,( ا-/K "!ا*ﻩ إذا آ#$ S:;^م و:< أدا( ا-K
اوتgh B*اw"* + اBK B*اw"/د ا1t/ اw/P B%/;«( ﺱ& وO$ ةwiHأ
i-K لt/ وآB*اw"* +د ا1t/ ا3#ا;( ا$ gh End أوBegin (/-د آ1H1$
.. EndRead و الEndWrite و الBeginRead وBeginWrite
ﺡP (Hر:/ واClasses الB* (K1/)/$ Streams ت ال-/K اوت3KP
. ا&تD,: اج+jsل و اjدsت ا-/. ﺱ"!مP g" واSystem.IO Name Space
i-K (-t*2 اB* و، Backing storage ، Stream Classes ال.$ ﺱ"!مP
e i.$ ن h C7 وآMemoryStream والBufferedStream و الFileStream
ﺱ"!مP g" واNetworkStream الi-K (-t*2 اB* وBack Storage ;ﺱ"!م أي
ال3ﺱ,P و، Backing Storage "!ام#ون ا$( و%&' ا+&K Stream الD,:
: g" اD%' اgh / اوت آgh Stream Classes
32
ة+اآ7 اB* B.* ار,* w) ﺡg## أD%'$ و;ﺱ"!م: BufferedStream Class -1
B "ﺡﺱBuffering *)ت ال+& ا.$ ﺱ"!مP /( آ:.* (-/K 7T:" 9a* D%'$
i-K لt/&ل وآ,"#eل أو ا#رs)( و ا./ اB$ (O#ة و+اآ7ن آ1%P دا( ﺡ2ا
i"K&m اد+/ ا&ت اB;w!" (O#ة و+( ذاآ.$Oﺱ"!م اP ¬( ﺡK&O*)ت ا+$
g"ت ا-/. اgh Buffering "!ام ال# اB* g##2ف اi اB/%; ، 9a* D%'$
)( ا&ت.* 3"; ¬اج ﺡ+jsل و اjدsت ا-/K B* ع+# أ./ اih ن1%;
D%'$ (دا2 اBﺡﺱP gh 3 * ;ﺱه1 وهi# ا"^ر إرgh Buffer الgh i.kوو
الI* ت%&'*)ت ا+$ gh PدK BufferedStream و;ﺱ"!م ال، +&آ
e ¬ة ﺡ+اآ7 اgh (%&' ا+&K i#اد إر+/ ا&ت اB;w!" NetworkStream
.. ,$# + ذآ/ آBacking storage سo%ا ا7;ﺱ"!م ه
B%/; وBufferedStream "!ام ال# ا:K 4096 bytes w) ﺡ3"; gkا+"h اD%'$
: لt/ آg-; / آBufferedStream و;ﺱ"!م ال.. (H ﺡﺱ اﺡi--,P أوiPز;د
C#
using System;
using System.Text;
using System.IO;
namespace Network_Buffering
{
class Program
{
static void Main(string[] args)
{
ASCIIEncoding asen = new ASCIIEncoding();
byte[] xx = asen.GetBytes("Hello Buffering");
33
MemoryStream ms = new MemoryStream(xx);
readBufStream(ms);
}
public static void readBufStream(Stream st)
{
// Compose BufferedStream
BufferedStream bf = new BufferedStream(st);
byte[] inData = new Byte[st.Length];
VB.NET:
Imports System
Imports System.Text
Imports System.IO
Namespace Network_Buffering
Class Program
gh ﻩ-/ﺡP وASCIIEncoding "!ام ال#$ Byte Array < ﺹ إD;1"ﺡ$ :/9 ¬ﺡ
¬ه ﺡG' اg" واreadBufStream د1t/ إ< ا:-# ار3u MemoryStream ال+&K
س الo%ﺱ"!ام ا$ ("9a* ة+ ذاآgh :-/ وﺡStream الioj B* :-&,"#ا
ﺱ"!ام$ ى+jة ا+* ﻩ إ< ﺹ-;1ﺡP .$ ﻩP;1"( *ﺡK&O$ :/9 3u BufferedStream
.. "ﻩK&m وEncoding.ASCIIال
H D آﺡ+&".; ( إذ,$ اﺱBuffring ( ال-/.$ &ﻩV 1 وه: MemoryStream Class -2
BK C:; ¬&ل ﺡ,"#2ل أو ا#رs اD&9 ة+اآ7 اgh 9a* D%'$ ا&تB;w!"
لt/ آg-; / و;ﺱ"!م آ+& آD%'$ (-/.ع ا+ ;ﺱ/* -* D%V <-K i:;w!P
: ة+اآ7 اgh رة1 ﺹB;w!" i:*!"#ﺡ¬ ا
34
C#
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
VB.NET:
Dim ms As MemoryStream = New MemoryStream
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage As Byte() = ms.GetBuffer
ms.Close
الI* D*."$ م1,P ¬ ﺡ، ,$# i*"!ا#$ :/9 / وآ: NetworkStream Class -3
Name B* iK"# ا3"; وSocket "!ام ال#$ (%&' ا+&K ﻩ#رs Stream
e إذunbuffered ﻩG$NetworkStream سo% ا+&".; وSystem.Net.Sockets Spaces
ﻩ.* BufferedStream Class "!ام ال# اDT; وBacking Storage <-K ي1";ﺡ
i:;w!"$ :/9 g"رة ا1Sل ا#; إر+ ¬ل ﺡt/ آg-; /ﺱ"!م آPداء و2 اB"ﺡﺱ
: Socket ال+&K +jز أiH <ة إ+اآ7$ ¨$ل اﺱt/ اgh
C#
TcpClient myclient = new TcpClient (“localhost”,5020);//Connecting with
server
VB.NET:
Dim myclient As TcpClient = New TcpClient(localhost, 5020)
Dim myns As NetworkStream = myclient.GetStream
Dim mysw As BinaryWriter = New BinaryWriter(myns)
mysw.Write(arrImage)
mysw.Close
myns.Close
myclient.Close
35
C#
FileStream FS = new FileStream(@"C:\MyStream.txt",
FileMode.CreateNew);// Any Action For Example CreateNew to Create Folder
VB.NET:
Dim FS As FileStream = New FileStream("C:\MyStream.txt",
FileMode.CreateNew)
36
Stream ﺡ( إذا آن الgh false (/9 IH+P وTrue (/9 IH+P ه:K وFileStream
. Backing Storage <-K ي1" ;ﺡe Class
ﺹ( الj <-K ي1" ;ﺡstream ﺡ( إذا آن الgh True (/9 IH+P وCanTimeout -3
. (-/.- *ﺡد9 وgO.P g" واTimeout
(h+./ i:* دةT"#e اB%/; وByte ل$ Stream ال3)( ﺡh+./ ﺱ"!مP وLength -4
. Stream ال3)< ﺡ-K ء:$ (h1TS/ ا3) أو "ﺡ; ﺡStream ;( الi
Stream لI91/ﺡ; اP ( أوh+./ Set وGet ﺱ"!م الP وPosition -5
: g-; / آgدس وه1t/ اB* (K1/)/$ Stream "&ت ال%* ك+"'Pو
ﻩ-K ($"%ﻩ أو ا:* اءة+,( ا-/. ﺱ"!مP ف1# g" واByte Buffer ال -1
($"%اءة أو ا+, اI91* ﻩh ف ;ﺡد1# ي7 واoffset ال -2
3"# g" ا&;"ت اB* <S92ﺡ; اﺡ اP ﻩh 3"; ف1# ي7 واnumByte ال -3
iPاء+9 أوi"$"آ
ءi"e ا:K ﻩK"# ا3"; ¬ ﺡOptional Delegate 1 وهAsyncCallback ال -4
($"%اءة أو ا+,( ا-/K B*
Read & الw/" ﺱ"!مP وUser Provided Object g وهStateobject ال -5
. Requests ال+d BK Write Request
Stream ﺡ( الDt/; ي7 واIAsyncResult الBegin Methods الIH+P
. Operation
Stream ال7T:P ﺡ( إذا أردgh ﺱ"!مP وEndWrite والEndRead .II
"^ر$ <,&; ¬ ﺡ،g اﺡStream Operation الB* ءi"e ا.$ Operation
($1-O/( ا-/. ا7T:; 3u (,$( اﺱ-/.ء اi"ا
3"; ¬ﺡدة ﺡ/( ا-/.م ا/P إ.$ Buffer ;ت ال1" *ﺡÌ;+T" ﺱ"!مP وFlush -1
.Stream Object gh ;ﺡP 3P ي7 اDestination إ< الBuffer ;ت ال1" *ﺡD,
37
Bآe &ﻩ,"#ﻩ أو ا#; إر+ ي7 واStream ال3)ﺱ"!م "ﺡ; ﺡP وSetLength -3
< إCدي ذاa; ف1# SetLength الgh ﺡد/ اB* D9 أStream ﺡ( إذا آن الgh
e ا!ﺹ( إ7"!ام ه# اIO"ﺱP B ، 3-# D%'$ ﻩ1م وﺹK وStream ع الO,ا
S:; ا7 CanSeek وCanWrite (ل ا!ﺹoj B* C7 (ﺡoS اC-/P Cآت اGP إذا
. Stream ال3)ﺡ; ﺡP D&9 eﺡ( أوoSﺡﺹ اT$
3"; دة. اgh وText أوBinary Data D,: Stream "&ت ال%* "!ام# اB%/;
3"; وBinary Data الI* D*." BinaryWriter و الBinaryReader "!ام ال#ا
، Text الI* D*." StreamWriter والStreamReader "!ام ال#ا
< إStream B* D;1 "ﺡUnicodeEncoding أوASCIIEncoding "!ام ال# ا3";و
B* (K1/)* ﺱ"!مP ¬ل ﺡ#رs ا:K Stream < إText B*&ل و,"#e ا:K Text
: g" اD%' اgh / آgدس وه1t/ا
VB.NET:
Dim str As StreamReader = File.OpenText(openFileDialog1.FileName)
textBox1.Text = str.ReadToEnd
38
:-* <( إ$"%- StreamWriter
C#
string fname = saveFileDialog1.FileName;
StreamWriter fsave = new StreamWriter(fname);
fsave.WriteLine(textBox1.Text);
VB.NET:
Dim fname As String = saveFileDialog1.FileName
Dim fsave As StreamWriter = New StreamWriter(fname)
fsave.WriteLine(textBox1.Text)
VB.NET:
Dim myns As NetworkStream = New NetworkStream(mysocket)
Dim br As BinaryReader = New BinaryReader(myns)
Dim myclient As TcpClient = New TcpClient("localhost", 5020)
Dim myns As NetworkStream = myclient.GetStream
Dim mysw As BinaryWriter = New BinaryWriter(myns)
mysw.Write(arrImage)
]آv Chatting ف ﺩم ﻩ * "ﻩ ب.p ل '?" ﻁ3*
لp
ر1 ض إذا0; 4> Server ال5?ء أوا* إ# ف ﺩ*ﻩ.p
3*
1 ﻩ وإذاnotepad ﺡ ال0 م. ; &نserver ال5 إnotepad
آ
: " ﻩ وهاpﺡ ا اﺡ0; ف.p Server ال5 إCp وإرCalc
Client * ال+$ BK ل#رs* ا+$ -"!; e : Client ل#رs* ا+$ إ'ء: eأو
TCP Connection B* Dﻩ آh و;ﺱ"!مChapter1 الgh 'ﻩ $ :/9 ي7 اChat
د1t/"!ام ا#&h ل#رs( ا-/K اء+Hs StreamWriter و الNetworkStream وال
ب1"%/ﺹ ا: اD;1ﺡP (-/K 3"P StreamWriter Object الB/k دة1H1/ اWriteLine
"!ام ال#$ i# إر3" Bytes الB* (K1/)* < إTextbox الgh
39 &ء- وServer* ال+$ < إTCP Socket Connection ال+&K NetworkStream
: g" اD%' اgh /; آH وع+'* 'ء $
39
: (" اName Spaces (hk $ 39 3u
C#
using System.Net.Sockets ;
using System.IO;
:g"د ا1%( ا$"%$ 39 Send Button gh
try
{
TcpClient myclient = new TcpClient (txt_host.Text,5020); // ; ال+.PSocket
NetworkStream myns = myclient.GetStream (); // %)$ او3;+"ﺱ-د إ< ا:#إ
StreamWriter mysw = new StreamWriter (myns);
mysw.WriteLine(txt_msg.Text);
mysw.Close ();
myns.Close ();
myclient.Close ();
}
catch (Exception ex) {MessageBox.Show (ex.Message );}
VB.NET:
imports System.Net.Sockets ;
imports System.IO;
Try
Dim myclient As TcpClient = New TcpClient(txt_host.Text, 5020)
Dim myns As NetworkStream = myclient.GetStream
Dim mysw As StreamWriter = New StreamWriter(myns)
mysw.WriteLine(txt_msg.Text)
mysw.Close
myns.Close
myclient.Close
Catch ex As Exception
Msgbox(ex.Message)
End Try
Text <ﻩ إ-;1ﺡP وStream &ل ال,"#< ا-K D/.; ي7 واServer * ال+$ 'ءsو
: g" اD%' اgh /; آH وع+'* 'ء $ 39 .. ى+jة أ+*
40
: (" اName Spaces (hk $ 39
C#
using System.Net.Sockets ;
using System.IO;
using System.Threading;
: ("ر; ا."( اhk إ3u
TcpListener mytcpl;// Objects Declaration
Socket mysocket;
NetworkStream myns;
StreamReader mysr;
: g-; /;ة آH د1t* 'ء $ م1, 3u
void our_Server ()
{
mytcpl = new TcpListener (5020);// Open The Port
mytcpl.Start ();// Start Listening on That Port
mysocket = mytcpl.AcceptSocket ();// Accept Any Request From Client and
Start a Session
myns = new NetworkStream (mysocket);// Receives The Binary Data From
Port
mysr = new StreamReader (myns);// Convert Received Data to String
string order = mysr.ReadLine();
41
Sub our_Server()
mytcpl = New TcpListener(5020)
mytcpl.Start()
mysocket = mytcpl.AcceptSocket
myns = New NetworkStream(mysocket)
mysr = New StreamReader(myns)
Dim order As String = mysr.ReadLine
If order = "notepad" Then
System.Diagnostics.Process.Start("notepad")
Else
If order = "calc" Then
System.Diagnostics.Process.Start("calc")
Else
Msgbox("Sorry Sir Your Request is not in my hand", order)
End If
End If
mytcpl.Stop()
If mysocket.Connected = True Then
While True
our_Server()
End While
End If
End Sub
م1,; Request ﺡ( ورود أيgh Socket < ال-K :S"$ د1t/ ا7م ه1,P ¬ﺡ
Socket ال+&K ت$ ﺡ( ورود أيghﻩ و.* ;ةH Session ﻩ وإ'ء-K (,hا1/$
(#+ﺡﺹ اT$ م1, 3u Text < إi1 و;ﺡStreamReader "!ام ال#$ i/-;"ﺱ
iK"# ا3"; notepad g( ه#+ إذا آ اot/h (m+' اD/)"!ام ا#$
Name gh دة1H1/ واProcess سo% اB/k دة1H1/ اStart د1t/"!ام ا#$
...System.Diagnostics Spaces
D'"أ ا$ ﺡثgh Thread ; ال+.P Ik وB* $e ;H Thread B/k i-'"و
: g-; / آFormD
C#
private void Form1_Load(object sender, System.EventArgs e)
{
Thread myth;
myth= new Thread (new System.Threading .ThreadStart(our_Server));
myth.Start ();
}
والSocketق الod إB* آG" C وذForm Closing ﺡث الgh g"( اhk $ 39 3u
.. *+& اgh Stream
private void Form1_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
try
{
mytcpl.Stop ();
Application.ExitThread ();
Application.Exit();
42
}
catch (Exception ex) {MessageBox .Show (ex.Message );}
VB.NET:
43
Dot Net Networks & TCP/IP Programming
Chapter 3
The Socket & Network Layer Programming
A. Socket Programming
B. Socket Class Members
C. TCP & UDP Classes Members
D. Asynchronous Sockets
44
\>\ ا[ ا>
] ا
Network Layer ( ال,&m ()*+$ BK oSTP +t أآD%'$ B& ف1# ءw)ا ا7 هgh
Stream < و إB* i-;1ﺡP .$ &ل ا&ت,"#ل وا#رs i.* D*." ا3"; g" اgوه
ق+T ا:$&ل و,"#oل و#رÁ UDP وTCP "!ام ال#$ ,$# :/9 ،(%&' ا+&K
TCP & UDP والSocket Programming الBK ف "ﺡث1# ءw)ا ا7 هgh و/i:$
. Asynchronous Socket BK ف "ﺡث1# (;i: اgh وClasses
<ز إiH B* ioj B* ا&تD, 3"; g"داة ا2 اg هSocketوف أن ال+./ اB*
¬ ﺡName Space System.Net.Sockets ;+.P (; ا&اgh مw-; i*"!ا#e و+jأ
gh i*"!ا# ا3"; g" واClasses الB* 3!k دK <-K Name Space ا7ي ه1";ﺡ
I* D*." اB/$ ::%/; إذSocket Class 1 وه/ أهBK ف "ﺡث1#( و%&'*)ت ا+$
Socket ن ال1%"; و+V&* D%'$ تe1آ1P+& اB* +jع أ1 أيI* أوUDP أو الTCP ال
:g-; /ات آ+"*رو$ (uou B* Object Method
C #:
Socket MySocket = new Socket(AddressFamily. , SocketType., ProtocolType.);
VB.NET:
Dim MySocket As Socket = New Socket(AddressFamily, SocketType,
ProtocolType)
ﻩ.* D*."P ف1# ي7 واIP Address ( الK1 ;ﺡP ول2 ا+"* ا&روgh 3"; ¬ﺡ
ATM أوNovel ت ال%&V gh ﺱ"!م/ واIPX i:* ا!رات وB* +&د آK CO.;و
B* و... ه+d وNetBIOS Address أوATM Networks ت ال%&V gh ﺱ"!م/وا
*)ت+& اI* 3 داD%'$ * ﺱ"!*ﻩ1 وهInterNetwork ا!رات ال7 ه3أه
^مI* "د./ ا1 وهIPv4 ع1: اB* 1 هIP ع1 < أن-K ف+.;ت و%&'$ (ا!ﺹ
3"# اH ;+, اD&,"ﺱ/ اgh( ﺡ وhو+./ اD'"( ا/^ أ-d وأh1#و+%;*
Socket ع ال1 ;ﺡP 3"; gt ا+"* ا&روgh ،IPv6 ﻩ ال- *ﺡDﻩ وﺡ:K ء:"#sا
"!ام# ا3"; * دةK و+jء اgV ل ا&ت أو#رs Stream ف ﺱ"!م1# Dأي ه
ا+j وأ، Stream ع1: اB* D#ا+"( اO/ /".:# :( ﺡ¬ ا/i/ ا7i Stream ال
تe1آ1Pو+$ أوTCP أوUDP ع1: اB* 1 هDih لSPÁ ﺱ"!م/ل ا1آ1Pو+&ع ا1 ﺡد
Internet Group IGMP أوInternet Control Message Protocol ICMPDt* ى+jأ
IP Security Header ;+." Socket إ'ء الot* ;+ : أو اManagement Protocol
ر1*2 ا7 هDt* ح+V <-K gPG ف1#ه و+d وIPSecAuthenticationHeader "رj $
TCP ل ال1آ1P+$ وف أن+./ اB* وUDP أوTCP ف !"ر ال1# : وه،Î إ'ء ا,ﺡe
* !ﺹV < إDﺹ1"ل وا1ﺹ1 اB* ¨,( ا"ﺡ-/K اء+H إg:.; ا7ﻩ وهH1* ل1آ1P+$ 1ه
B* ¨,( ا"ﺡ-/K 3K; e ﻩ:آe ﺱ& وI;+# ل1آ1P+$ 1ih UDP ل ال1آ1P+$ **ﺡد أ
gKذاs( ا&¬ ا-/K اء+Hs اH T* 1( وه-#+/&ت ا- 3-ل اﺱ1ﺹ1ا
ول2ء اw) اgh :ﺡ+V * 1 وهMulticast Group ¬&ت اK1/)* وإ'ءBroadcast
Header والTCP ل$ ا!صHeader ﻩ الh B&; وg" اD%' إ< ا+^ أgtوا
:/i:$ ق+Tﺡ¶ اe وUDP ل$ ا!ص
ان1:K B;w!P ﻩh 3"; ¬اﺡ ﺡ1 ا%&- 32 Bits B* ن1%"; وTCP Header الeأو
32 Bits gh %&- g-ﺱ- ا"ﺱ39+ وا16 Bits gh D&,"ﺱ/ وا16 Bits gh D#+/ا
&ت$ ء ا!صw) اIk و3"; (;i: اgh وChecksum ( إ< الhks$ ¨, ا"ﺡ39ور
:
45
TCP Header
Data Offset: 4 bits the number of 32 bit words in the TCP Header. This indicates
where the data begins. The TCP header (even one including options) is an integral
number of 32 bits long.
Window: The number of data octets beginning with the one indicated in the
acknowledgment field which the sender of this segment is willing to accept.
…
<-K ي1"اﺡ و;ﺡ1 ا%&- ا&تB* 32 Bits B* ن1%"; وUDP Header الu
gkا+"h اD%'$"ر;ن وj ا/ih Checksum و ال3-"ﺱ/ أ* ا16 Bits D#+/ان ا1:K
:ل#رs( ا-/K gh 3i*"!ا# ا3"; e
UDP Header
46
: TCP Connection 'ءs Socket Programming "!ام ال#ا
Dاﺡ+/ اB* (K1/)/$ TCP Socket Connection "!ام ال#$ لSPe( ا-/K +/P
: g" اD%' اgh / آgوه
: g-; / آSocket 'ء ال $ server و الClient الgh (-/.&أ اP إذ
C #:
Socket MySocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
VB.NET:
Dim MySocket As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp)
:K >,h ﺱ"!مP وBind د1t/"!ام ا#$ g اﺡ+P1&/% اI* Socket > ال$ ر3u
: g-; /&ل وآ,"#eا
C #:
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 5020);
MySocket.Bind(ip);
VB.NET:
Dim ip As IPEndPoint = New IPEndPoint(IPAddress.Any, 5020)
MySocket.Bind(ip)
ﺡدP C:%/; وlisten د1t/"!ام ا#$ ﺡد/ اPort< ال-K :S"( ا-/.$ م, ا3u
م1, 3u 1- 39+ر ﻩ ا+/ *ﺡد+d دK Ik1 وi1&9 3"# g"ة اwiH2د اK
: g-; / وآaccept د1t/"!ام ا#$ لSPe< ا-K (,hا1/$
C #:
MySocket.Listen(-1);
MySocket.Accept();
VB.NET:
MySocket.Listen(-1)
MySocket.Accept
47
B* (h1TS* gh ا&تÐ&.P ¬ ﺡReceive د1t/ل اoj B* &ل ا&ت,"# ا3";و
: g-; / وآByte ع1:ا
C #:
byte[]Received=new byte[1024];
MySocket.Receive(Received);
VB.NET:
Dim Received(1024) As Byte
MySocket.Receive(Received)
(لt/ آ5020)Port< ال-K iT;+."$ وTCP ع1: اB* Connection 'ء $ :/9 :وه
gi e Listen ;+."$ :/9 وBind د1t/"!ام ا#$ Socket ل$ iO$ ر3"; ¬ﺡ
.. 1- د.ا
Socket; ال+.P B* $e Socket "!ام ال#$ TCP Client ل#رs* ا+$ ;+."و
ل# إر3u IPEndPoint فi( اO,:$ Port ال39 ورServerان ال1:K د:#ى وإ+jة أ+*
socket الgh ﻩT;+.P 3P /$ ل#رs( ا-/K 3"P وSend د1t/"!ام ا#$ ا&ت
: g-; / وآStream Socket ﺱ"!م:# ¬ﺡ
C #:
String str = Console.ReadLine();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] msg = asen.GetBytes(str);
VB.NET:
Dim str As String = Console.ReadLine
Dim asen As ASCIIEncoding = New ASCIIEncoding
Dim msg As Byte() = asen.GetBytes(str)
Dim MySocket As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp)
Dim remote As IPEndPoint = New
IPEndPoint(IPAddress.Parse("192.168.1.101"), 5020)
MySocket.Connect(remote)
MySocket.Send(msg)
MySocket.Close
48
: UDP Connectionless 'ءs Socket Programming "!ام ال#ا
Dاﺡ+/ اB* (K1/)/$ UDP Socket Connection "!ام ال#$ لSPe( ا-/K +/P
: g" اD%' اgh / آgوه
server و الClient الgh (-/.&أ اP إذTCP الgh /ل آSPe( ا-/K ﻩ$'"Pو
: g-; / آSocket 'ء ال $
C #:
Socket MySocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Udp);
VB.NET:
Dim MySocket As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Udp)
:K >,h ﺱ"!مP وBind د1t/"!ام ا#$ g اﺡ+P1&/% اI* Socket > ال$ ر3u
: g-; /&ل وآ,"#eا
C #:
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 5020);
MySocket.Bind(sender);
VB.NET:
Dim sender As IPEndPoint = New IPEndPoint(IPAddress.Any, 5020)
MySocket.Bind(sender)
End Point (; ا&اgh ف+. ¬ ﺡReceiveFrom د1t/&ل ا&ت ﺱ"!م ا,"#eو
( الh1TS* I* reference ر ك+/( و,$ اﺱgh ﻩT;+.P 3P * <-K ء:$ Reference
B* String <( إh1TS/ اD;1ﺡP IO" ﺱ3u B* وReceiveFrom د1t/ إ< اByte
: g-; / وآASCII سo% اB/k دة1H1/ اGetString د1t/ل اoj
C #:
int recv;
byte[] data = new byte[1024];
EndPoint Remote = (EndPoint) (sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
VB.NET:
Dim recv As Integer
Dim data(1024) As Byte
49
Dim Remote As EndPoint = CType((sender), EndPoint)
recv = newsock.ReceiveFrom(data, Remote)
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv))
B* i-;1ﺡP .$ ا&تi ر+/ ¬ ﺡSendTo د1t/"!ام ا#ل ا#رs اgh 3";و
د1t/ل اoj B* "ﻩh+.* ::%/; ( إذ-#+/ ا&ت ا3) وﺡByte Array < إString
ر ﻩ ال+/ ا+j( وا-#+/( ا#+ Broadcast D/K ;+ ¬ ﺡFlags ع ال1 وLength
:g-; / وآEndPoint Object
C #:
string welcome = "Hello All";
data = Encoding.ASCII.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.Broadcast, Remote);
VB.NET:
Dim welcome As String = "Hello All"
data = Encoding.ASCII.GetBytes(welcome)
newsock.SendTo(data, data.Length, SocketFlags.Broadcast, Remote)
ﺡ;هP B%/; أوgi":P e ¬ﺡ$ Infinity While Loop gh اد1آ2ا ا7 هIk وB%/;
.. &ل,"#eل وا#رsت ا-/K B* B.* د.$
د إ< ال:# إB%/; ¬ ﺡIP Address ;+." و;ﺱ"!م: IPAddress Class -1
:g-; /*( ﻩ آ.( اSل واt/ آIPEndPoint
C #:
IPAddress newaddress = IPAddress.Parse("192.168.1.1");
VB.NET:
Dim newaddress As IPAddress = IPAddress.Parse("192.168.1.1")
: g-; / آgان وه1:.ﺡ; اP gh راتj (.$ ارB$ "رjs اB%/;و
(%&'< ا-K ان *"ح1:K أيDt/" و;ﺱ"!مAny
(%&'< ا-K ةwiH2 اI/) gKذاs ا&¬ اDt/" و;ﺱ"!مBroadcast
127.0.0.1 1 وهloopback D وف+./ان ا1:. اDt/" و;ﺱ"!مLoopback
^م: اgh Network Interfase د1Hم وK ( ﺡgh و;ﺱ"!مNone
: وهtow Objects B$ (ر,/- مK D%'$ د1t/ا ا7 ;ﺱ"!م هEquals
إذا آFalse وBi$'"* إذا آTrue IH+; وBا1:K B$ (ر,/- ﺱ"!م#
.BT-"!*
50
Host D Port ان وال1:. "ﺡ; ا:*!"# ﺡ¬ ا: IPEndPoint Class -2
: g-; /*( ﻩ آ.( اSﻩ وا$ لSPe; ا+ ي7وا
C #:
VB.NET:
Dim end As IPEndPoint = New IPEndPoint(IPAddress.Parse("192.168.1.1"),
5020)
:g-; / آg وهSocket Class الgh 3KP g"اص ا1!( اK1/)*
Socket < ال-K (h+./ اB;و:.( اK1/)* IH+; وAddressFamily
Socket الB* اءة+,- ةw ا&ت ا)ه3) ﺡIH+; وAvailable
e أمBlocking Mode ;ﺱ"!م الsocket ( إذا آن الh+./ Set أوGet gO.; وBlocking
Remote الI* DS"* Socket ( إذا آن الh+./ ة+t%$ ( ا!ﺹ7ﺱ"!م هP وConnected
e أمHost
Socket الI* D*."; ي7 اD'"( ^م اh+./ و;ﺱ"!مHandle
Socket الgh ي ;ﺱ"!م7ل ا1آ1Pو+&( اh+./ و;ﺱ"!مProtocolType
Remote Host الI* ي ;ﺱ"!م7 اSocket الBK *ت1-.* IH+; وRemoteEndPoint
:C'*ﺩاpv ل3
وآ
C #:
using System;
using System.Net;
using System.Net.Sockets;
class Socket_ Properties
{
public static void Main()
{
IPAddress ia = IPAddress.Parse("127.0.0.1");
IPEndPoint ie = new IPEndPoint(ia, 8000);
Socket fmo = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
Console.WriteLine("AddressFamily: {0}",
fmo.AddressFamily);
Console.WriteLine("SocketType: {0}",
fmo.SocketType);
Console.WriteLine("ProtocolType: {0}",
fmo.ProtocolType);
Console.WriteLine("Blocking: {0}", fmo.Blocking);
fmo.Blocking = false;
Console.WriteLine("new Blocking: {0}", fmo.Blocking);
Console.WriteLine("Connected: {0}", fmo.Connected);
fmo.Bind(ie);
IPEndPoint iep = (IPEndPoint)fmo.LocalEndPoint;
Console.WriteLine("Local EndPoint: {0}",
iep.ToString());
51
fmo.Close();
}
VB.NET:
imports System
imports System.Net
imports System.Net.Sockets
End Sub
:*ت ا.< ا
ﻉp 4>
AddressFamily: InterNetwork
SocketType: Stream
ProtocolType: Tcp
Blocking: True
new Blocking: False
Connected: False
Local EndPoint: 127.0.0.1:8000
Press any key to continue . . .
52
: TCP & UDP Classes Members :3k
IP ان ال1:K ih ر+/ ¬ ﺡserver الI* لSPe( ا-/K اء+H2 ﺱ"!مP و:Connect
:g-; / وآPort ال39 و رServer ل$ ا!ص
C #:
TcpClient tcp = new TcpClient();
tcp.Connect(IPAddress.Parse("192.168.1.1"),5020);
VB.NET:
Dim tcp As TcpClient = New TcpClient
tcp.Connect(IPAddress.Parse("192.168.1.1"), 5020)
53
Properties والMethods الB* (K1/)* <-K ي1"ﺡP ¬ ﺡ:TcpListener Class-2
:g-; / آgوه
LocalEndpoint الgh ﺱ"!م/ اPort ال39 ورIP الIH+; ¬ ﺡ: LocalEndpoint
.ﺡد/ا
TCP Server الgh د1t/ﺹ و اS! اDل إ< آ1ﺹ1 اIO" ﺱioj B* و:Server
ه+d وListen وReceive والSendto والAccept الDt* ,$# ه:ﺡ+V g"وا
54
: i$ (ﺹ ا!ﺹS!د وا1t/ ا3 أهB*و
VB.NET:
mcastSocket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram,
ProtocolType.Udp)
Group الgh ﻩj; إد+ ي7 اIP الi إ: ﺱ3u Address List ;+."$ م1, k
/ وآBind د1t/"!ام ا#$ ت1%ﺱ$ iO$+ ﺱﻩT:$ ان1:. اDj; User الD.) أو
: g-;
C #:
IPAddress localIPAddr = IPAddress.Parse(Console.ReadLine());
mcastSocket.Bind(IPlocal);
VB.NET:
Dim localIPAddr As IPAddress = IPAddress.Parse(Console.ReadLine)
mcastSocket.Bind(IPlocal)
55
:g-; /ﺡد آ/ان ا1:. اi : وﺱMulticast Option ; ال+."$ م1, 3k
C #:
MulticastOption mcastOption;
mcastOption = new MulticastOption(localIPAddr);
VB.NET:
Dim mcastOption As MulticastOption
mcastOption = New MulticastOption(localIPAddr)
;ول "ﺡ2ات ا+"*رو$ (uou د1t/ ا7 ه7jGP ¬< ال ﺡ-K +" ا3u B*و
7 ه:" ﺡgh وUDP أوTCP أوSocket <-K أوIPv6 <-K أوIP <-K +"ى ا1"*ﺱ
gh وMulticast Group < إIP 3k 1; ه+ * إذIP <-K +"ف ﺱ"!م ا1#
(hk إB$ "رje اB%/;;( و1K (hk; إ+ ¬ ﺡ+"ع ا1 ﺡدgt ا+"*ا&رو
إﻩ ال:ا ﺱ+j وأDropMembership (;1K أو إءAddMembership ;ﻩ1K
:g-; /'ﻩ و آ $ :/9 ي7 واMulticastOption Object
C#:
mcastSocket.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership,mcastOption);
VB.NET:
mcastSocket.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership, mcastOption)
56
: Asynchronous Sockets Programming :3.2
+t أآD%'$ Asynchronous Socket "!ام ال# اBK ءw)ا ا7 هgh ف "ﺡث1#
"!ام#< ا-K (-/.( ا-t*2 اB* (K1/)* ¨&O ف1# و,$# ﻩ$ :uﺡP /K oSTP
... ت%&'*)ت ا+$ gh B*اw"* +ل اSPeا
gh D/.ﺡ"ج إ< اP g"*)ت ا+& اgh اH 3i* B*اw"/ل اSPeوف أن ا+./ اB*
(-/.ء اi" ا.$ < إ+jÀ +*2 لSPe"!ام ا#$ / ;ﺱe ¬ ﺡg,, اﺡB*wا
S:; e B آe ر1*2 ا7 هDt* -O"P g"ت ا-/. اgh اH 3i* "!ا*ﻩ#ا)ر;( وا
Slow ﺱ"!مP &ت- (-&,"ﺱ/( اi) ﺡ( إذا آ اgh "!ا*ﻩ#ا ا$أ
أوD&,"ﺱ/ اI* D#+/ اB;زi)> ا$+ Dialup < ال-K (%&'د ا/"K آConnection
¬ ﺡServerﺱ"!م الP B*!"ﺱ/ اB* ة+&( آK1/)* C: ﺡ( إذا آن هgh
gh ل#رs( ا-/K اء+H إB* (%&'< ا-K B*!"ﺱ/( ا,$ B*اw"/ب ا1-#2 اI:/;
"!ام#$ S:; ( اﺡ7 هgh و، +jÀ زiH B* ت$ D&," ;ﺱServer ن ال1ﺡ( آ
ة.$ م,* ا+& اB* ﺡ( إذا أردgh اH 3i* +&".; إذB*اw"/ ا+ل اSPeا
,$# + ذآ/ أو آ، Connection ﺱ الT "!ام#$ وThread ﺱ الT <-Kم وi*
ﺱT ن1*!" ;ﺱB*!"د *ﺱK H1; ء ﺱ& أو اﻩgO$ لSPe ﺡ( إذا آن اgh
.. Server ال
الB/k دة1H1/ اmethods الB* (K1/)/$ B*اw"/ ا+d لSPe اوت ا3KP
9 وSystem.Net.Socket Namespaces الB* iK"# ا3"; g" واSocket Class
Begin D% و،د1t/ ا3#ا;( أ$ gh Begin د ال1H1$ دس1t/ ا7ت اوت هw*
:K callback result عHرs ﺱ"!مP g" واi (-$,* End Method H1; Method
:g-; / آg وه7T:" اB* Begin Method ء الi"ا
57
Object د إ< ال:# وإClient Request ل ال1&, ﺱ"!مP وBeginAccept -1
دK &ل,"# اB* Server الB%/"; ف1# (,;+O ا7"!ام ه#$ وAsyncCallback
(-/. اB* ءi"e"^ر اe (Hون اﺡ$ و91ﺱ اT gh Clients Requests الB*
AsyncCallback Delegate "!ام ال#$ د1t/ء اK"#ة ا+* D آgh 3"; ¬ا)ر;( ﺡ
:g-; / آg-; /ﺱ"!م آPو
C #:
m_mainSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ipLocal = new IPEndPoint (IPAddress.Any, 5020);
m_mainSocket.Bind (ipLocal);
m_mainSocket.Listen (10);
m_mainSocket.BeginAccept (new AsyncCallback (Client_request_method),
null);
VB.NET:
m_mainSocket = New Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp)
Dim ipLocal As IPEndPoint = New IPEndPoint(IPAddress.Any, 5020)
m_mainSocket.Bind(ipLocal)
m_mainSocket.Listen(10)
m_mainSocket.BeginAccept(New AsyncCallback(Client_request_method),
Nothing)
¨$ اﺱBK DST:* Callback Reference gh Client Request ( الhk إ3"# ¬ﺡ
Client Accepted ء الi وإClient Request &ل ال,"#e method إ'ءB* $e :وه
: EndAccept د1t/"!ام ا#$ Object
C#:
public void Client_request_method(IAsyncResult ar)
{
Socket listener = (Socket)ar.AsyncState;
Myclient = listener.EndAccept(ar);
Myclient.Send(/* data to be send*/ );
listener.BeginAccept(new AsyncCallback(Client_request_method), listener);
Console.WriteLine("Socket connected to {0}",
client.RemoteEndPoint.ToString()); }
VB.NET:
Dim listener As Socket = CType(ar.AsyncState, Socket)
Myclient = listener.EndAccept(ar)
Myclient.Send
listener.BeginAccept(New AsyncCallback(Client_request_method), listener)
Console.WriteLine("Socket connected to {0}",
client.RemoteEndPoint.ToString)
:g-; /ل آ%Vة أK 7jGP BeginAccept Method أﺹ&ﺡ الDot Net 2005 gh
State وAsyncCallBack Delegate 7jGP و2005 و2003 اوتgh ول2 اD%'ا
:g-; / وآSocket الgh Request ﺡ( الBK *ت1-.* عHرs Object
MySocket.BeginAccept(AsyncCallback , object state)
58
(/-"ﺱ/ ا&ت ا3)ﺡ; ﺡP ﻩh C:%/; ¬ ﺡ2005 اوتgh gt اD%'ا
MySocket.BeginAccept(int Data_ Receive_Size , AsyncCallback , object state)
Accepted Socket ﺡ; الP ﻩh B%/$ ¬ ﺡ2005 اوتgh ¬t اD%'ا
MySocket.BeginAccept(Socket accept_Socket ,int Data_ Receive_Size ,
AsyncCallback , object state)
VB.NET:
Dim MySocket As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp)
Dim ipend As IPEndPoint = New
IPEndPoint(IPAddress.Parse("192.168.1.101"), 5020)
:g-; / آCallBack Socket ﺡ; الP 3"; Connected Method الgh
C #:
public static void Connected(IAsyncResult iar)
{
Socket sock = (Socket)iar.AsyncState;
try
{
sock.EndConnect(iar);
}
catch (SocketException)
{
Console.WriteLine("Unable to connect to host");
}}
VB.NET:
Public Shared Sub Connected(ByVal iar As IAsyncResult)
Dim sock As Socket = CType(iar.AsyncState, Socket)
Try
sock.EndConnect(iar)
Catch generatedExceptionVariable0 As SocketException
Console.WriteLine("Unable to connect to host")
End Try
59
End Sub
VB.NET:
Dim data(1024) As Byte
MySocket.BeginReceive(data, 0, data.Length, SocketFlags.None, New
AsyncCallback(ReceivedData), MySocket)
60
byte[] data = Encoding.ASCII.GetBytes("Hello Word");
MySocket.BeginSend(data, 0, data.Length, SocketFlags.None,
new AsyncCallback(SendData), MySocket);
VB.NET:
Private Shared Sub SendData(ByVal iar As IAsyncResult)
Dim server As Socket = CType(iar.AsyncState, Socket)
Dim sent As Integer = server.EndSend(iar)
End Sub
Dim data As Byte() = Encoding.ASCII.GetBytes("Hello Word")
MySocket.BeginSend(data, 0, data.Length, SocketFlags.None, AddressOf
SendData, MySocket)
Socket Object'ء ال $ &أP Dاﺡ+/ اB* (K1/)/$ B*اw"* +ل اSPe( ا-/K +/P
Asynchronous &أBeginConnect ; ال+.P 3"; C ذ.$ Server Side الgh
Method والIPEndPoint Object د:# إ3"; ¬ ﺡSocket < ال-K Connection
لSPe( ا-/K ( اﺡ7 هgh &أP وi State Object والAsynchronous Callback
3"; ¬ ﺡClient Request ل ال1&, BeginAccept ر إ< ال+/P C ذ.$ و، Socket ل$
(ﺱ-)ل ا1&,$ ih ﻩ/-. Client إ< الAcknowledgement D#+; و-Oل ا1&9
ل#رs$ ﺱ( ا&ء-)< ا-K (,hا1/ ا.$ Client الIO"ل و ;ﺱ#رÁ ( ا&ء%*وإ
"!ام#$ Client الB* (#+ اServer الD&," و;ﺱBeginSend د1t/"!ام ا#$
End د1t/ اi-$,P Begin (-/K D% ن h ,$# + ذآ/ وآBeginReceive د1t/ا
لSPe اw* * 1* وه+& اgh Thread ﺱ الT <-K ى+j( أ-/K اء+Hs اد."#o
.B*اw"/ل اSPe اBK B*اw"* +ا
61
Client/Server Chatting *+$ 'ء $ نºم ا1, ف1# (,$ اﺱ3هT/< ا-K ء:$و
. &ل ا&ت,"#ل وا#رs Asynchronous Socket < ال-K /".;
VB.NET:
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
62
7 \1(Main Class ال%; )أي ﻉﺩ 'ﻉGlobal Declaration ال
: ا%;اﻉر
C #:
public class Form1 : System.Windows.Forms.Form
{
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,
ProtocolType.Tcp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 5020);
private byte[] data = new byte[1024];
private int size = 1024;
VB.NET:
Public Class Form1 Inherits System.Windows.Forms.Form
Connection ﻉفp 4> د ا. ا7 \1 Form Load ال
ل/'vل ا."1
# %;\ 'ﻉk 5020 Port ال5# o
و;ﻉTCP ال5# ;ﻉ
ﺩ
: BeginAccept ﺩام الp
C #:
private void Form1_Load(object sender, System.EventArgs e)
{
server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,
ProtocolType.Tcp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 5020);
server.Bind(iep);
server.Listen(5);
server.BeginAccept(new AsyncCallback(AcceptConn), server);
}
VB.NET:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs)
server = New Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Any, 5020)
server.Bind(iep)
server.Listen(5)
server.BeginAccept(New AsyncCallback(AcceptConn), server)
End Sub
Accepted ء الC\ ﻩ إp وايAccept Callback Method \ إ=ءk
لp وﻉﺩ ذ إرEndAccept Method ﺩام الp Request
op'ل ا? و." C "' Client ال5 إAcknowledgement
:;
آBeginSend Method ﺩام الp
63
C #:
void AcceptConn(IAsyncResult iar)
{
Socket oldserver = (Socket)iar.AsyncState;
Socket client = oldserver.EndAccept(iar);
conStatus.Text = "Connected to: " + client.RemoteEndPoint.ToString();
string stringData = "Welcome to my server";
byte[] message1 = Encoding.ASCII.GetBytes(stringData);
client.BeginSend(message1, 0, message1.Length, SocketFlags.None,new
AsyncCallback(SendData), client);
}
VB.NET:
Sub AcceptConn(ByVal iar As IAsyncResult)
Dim oldserver As Socket = CType(iar.AsyncState, Socket)
Dim client As Socket = oldserver.EndAccept(iar)
conStatus.Text = "Connected to: " + client.RemoteEndPoint.ToString
Dim stringData As String = "Welcome to my server"
Dim message1 As Byte() = Encoding.ASCII.GetBytes(stringData)
client.BeginSend(message1, 0, message1.Length, SocketFlags.None, New
AsyncCallback(SendData), client)
End Sub
:;
وآBeginSend ء الC Send Callback method \ إ=ءk
C #:
void SendData(IAsyncResult iar)
{
Socket client = (Socket)iar.AsyncState;
int sent = client.EndSend(iar);
client.BeginReceive(data, 0, size, SocketFlags.None,new
AsyncCallback(ReceiveData), client);
}
VB.NET:
Sub SendData(ByVal iar As IAsyncResult)
Dim client As Socket = CType(iar.AsyncState, Socket)
Dim sent As Integer = client.EndSend(iar)
client.BeginReceive(data, 0, size, SocketFlags.None, New
AsyncCallback(ReceiveData), client)
End Sub
:;
وآBeginReceive ء الC Receive Callback method \ إ=ءk
C #:
void ReceiveData(IAsyncResult iar)
{
Socket client = (Socket)iar.AsyncState;
int recv = client.EndReceive(iar);
if (recv == 0)
{
64
client.Close();
conStatus.Text = "Waiting for client...";
server.BeginAccept(new AsyncCallback(AcceptConn), server);
return;
}
string receivedData = Encoding.ASCII.GetString(data, 0, recv);
results.Items.Add(receivedData);
byte[] message2 = Encoding.ASCII.GetBytes(receivedData);
client.BeginSend(message2, 0, message2.Length, SocketFlags.None,new
AsyncCallback(SendData), client);
}
VB.NET:
Sub ReceiveData(ByVal iar As IAsyncResult)
Dim client As Socket = CType(iar.AsyncState, Socket)
Dim recv As Integer = client.EndReceive(iar)
If recv = 0 Then
client.Close()
conStatus.Text = "Waiting for client..."
server.BeginAccept(New AsyncCallback(AcceptConn), server)
Return
End If
Dim receivedData As String = Encoding.ASCII.GetString(data, 0, recv)
results.Items.Add(receivedData)
Dim message2 As Byte() = Encoding.ASCII.GetBytes(receivedData)
client.BeginSend(message2, 0, message2.Length, SocketFlags.None, New
AsyncCallback(SendData), client)
End Sub
م =ء * ال. ف.p وانServer ء *] * الCvﺩ '\ ا1 وه
: اo=\ =ء *=وع ﺩ;ﺩ آ
ا1 و"ﺩءClient
65
: اNamespaces ف ﺩم ال.p
C #:
using System.Net;
using System.Net.Sockets;
using System.Text;
VB.NET:
imports System.Net
imports System.Net.Sockets
imports System.Text
7 \1(Main Class ال%; )أي ﻉﺩ 'ﻉGlobal Declaration ال
: ا%;اﻉر
C #:
public class Form1 : System.Windows.Forms.Form
{
private Socket client;
private byte[] data = new byte[1024];
private int size = 1024;
VB.NET:
Private client As Socket
Private data As Byte() = New Byte(1024) {}
Private size As Integer = 1024
conStatus.Text = "Connecting..."
Dim newsock As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Parse(textBox1.Text),
5020)
newsock.BeginConnect(iep, New AsyncCallback(Connected), newsock)
:;
آCallback Connect method \ =ء1 \k
C #:
void Connected(IAsyncResult iar)
{
client = (Socket)iar.AsyncState;
try
{
client.EndConnect(iar);
conStatus.Text = "Connected to: " + client.RemoteEndPoint.ToString();
66
client.BeginReceive(data, 0, size, SocketFlags.None, new
AsyncCallback(ReceiveData), client);
}
catch (SocketException)
{
conStatus.Text = "Error connecting";
}
}
VB.NET:
Sub Connected(ByVal iar As IAsyncResult)
client = CType(iar.AsyncState, Socket)
Try
client.EndConnect(iar)
conStatus.Text = "Connected to: " + client.RemoteEndPoint.ToString
client.BeginReceive(data, 0, size, SocketFlags.None, New
AsyncCallback(ReceiveData), client)
Catch generatedExceptionVariable0 As SocketException
conStatus.Text = "Error connecting"
End Try
End Sub
:;
وآBeginReceive ء الC Receive Callback method \ إ=ءk
C #:
void ReceiveData(IAsyncResult iar)
{
Socket remote = (Socket)iar.AsyncState;
int recv = remote.EndReceive(iar);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
results.Items.Add(stringData);
}
VB.NET:
Sub ReceiveData(ByVal iar As IAsyncResult)
Dim remote As Socket = CType(iar.AsyncState, Socket)
Dim recv As Integer = remote.EndReceive(iar)
Dim stringData As String = Encoding.ASCII.GetString(data, 0, recv)
results.Items.Add(stringData)
End Sub
67
: Send Button د ا ال. ا7\ إk
C #:
try
{
byte[] message = Encoding.ASCII.GetBytes(newText.Text);
newText.Clear();
client.BeginSend(message, 0, message.Length, SocketFlags.None,new
AsyncCallback(SendData), client);
newText.Focus();
}
catch(Exception ex){MessageBox.Show(ex.Message);}
VB.NET:
Try
Dim message As Byte() = Encoding.ASCII.GetBytes(newText.Text)
newText.Clear
client.BeginSend(message, 0, message.Length, SocketFlags.None, New
AsyncCallback(SendData), client)
newText.Focus
Catch ex As Exception
Msgbox(ex.Message)
End Try
:;
وآBeginSend ء الC Send Callback method \ إ=ءk
C #:
void SendData(IAsyncResult iar)
{
try
{
Socket remote = (Socket)iar.AsyncState;
int sent = remote.EndSend(iar);
remote.BeginReceive(data, 0, size, SocketFlags.None, new
AsyncCallback(ReceiveData), remote);
}
catch(Exception ex){MessageBox.Show(ex.Message);}
VB.NET:
Sub SendData(ByVal iar As IAsyncResult)
Try
Dim remote As Socket = CType(iar.AsyncState, Socket)
Dim sent As Integer = remote.EndSend(iar)
remote.BeginReceive(data, 0, size, SocketFlags.None, New
AsyncCallback(ReceiveData), remote)
Catch ex As Exception
Msgbox(ex.Message)
End Try
End Sub
68
:;
وآBeginReceive ء الC Receive Callback method \ إ=ءk
C #:
void ReceiveData(IAsyncResult iar)
{
try
{
Socket remote = (Socket)iar.AsyncState;
int recv = remote.EndReceive(iar);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
results.Items.Add(stringData);
}
catch(Exception ex){MessageBox.Show(ex.Message);}
}
VB.NET:
Sub ReceiveData(ByVal iar As IAsyncResult)
Try
Dim remote As Socket = CType(iar.AsyncState, Socket)
Dim recv As Integer = remote.EndReceive(iar)
Dim stringData As String = Encoding.ASCII.GetString(data, 0, recv)
results.Items.Add(stringData)
Catch ex As Exception
Msgbox(ex.Message)
End Try
End Sub
4> Server ] * ال# ا3 آ%; v Client > ن * الv
وآ
* أBeginAccept Method والSocket Connection الServer ﻉف ال
BeginConnect Method و الSocket Connection ﻉف الClient ال
... Client والServer C0 "ل هpvل واp
ار# 5 "'و
69
Dot Net Networks & TCP/IP Programming
Chapter 4
Advanced Multicasting Systems
70
\>\ ا[ ا>
] ا
:$ وBroadcasting الB$ وi:$ ق+T ا:$ وMulticasting ; ال+."$ ,$# :/9
D%'$ i:K ف "ﺡث1# ءw) ا7 هgh اوت وgh i.* D*."( اT وآiKا1أ
*)ت ال+$ (ﺹjت و%&'*)ت ا+$ gh ة+&% اi"/ه2 C وذoSTP +tأآ
...Conferencing
"!ام ال#$ وUDP ل ال1آ1P+$ +&K Multicasting الI* D*." ا3"; وف اﻩ+./ اB*
IGMP – ل ال1آ1P+$ "!ام#$ تK1/)/( إدارة ا-/K 3"P وClass D Subnet Mask
Internet Protocol الB* ءwH 1ي ه7 واInternet Group Management Protocol
ت-/K <-K ي1" ;ﺡIGMP ل ال1آ1P+$ ن h g" اD%' اB* "; / وآModel
(#+ g-% ا&ت ا3)ل ﺡ# إر3"; ¬&ت )ﺡ- 3-ل اﺱ1ﺹ1 اB* ¨,ا"ﺡ
TTL Time to < ال-K ;ي أ1"ﺡP و، (+T ﺹ39+ اIk1$ i إB%/; "ر;( إذj اgوه
< إ3k ) (;دارs( ا-/.ع ا1 و،(# رD% gkا+"he ا+/.ﻩ اh ي ;ﺡد7 واLive
(Membership Query (K1/)/ اBK *ت1-.* عH أو إر، (K1/)* B* إء، (K1/)*
Class D D ﺡد/ اRange الB/k )*+$ ﺡ;هP 3"; g"( اK1/)/ان ا1:K ا+jوأ
.
http://www.iana.org/assignments/multicast-addresses
Unicast "!ام ال#$ Backbone Tunnels الB$ Multicast Packets الD, 3";
< إRouter B* D#+P وRouter ( إ< ال%&' اDj داB* i# إر3"; ¬ ﺡTunnel
الB* +t% ا+h1; * 1 وهUnicast ب ال1-#"!ام أ#$ Backbone Tunnel ال+&K +jأ
i.;ز1"$ 1م ه1,; وRouter ﺱ!( واﺡة إ< الD#+P ¬( ﺡ%&' اgh Bandwidth
/".; اﻩ1 هMulticast الgh ﺡة1( ا-%'/ اUnicast "!ام ال#$ ةwiH2< ا-K
.UDP Connectionless Protocol "!ام ال#< ا-K D* آD%'$
Peer ت ال%&V gت وه%&' اB* اع1( أuou gh Multicasting "!ام ال# ا::%/;و
ي7 اGroup و إ< الB* D#+; وD&," ;ﺱD% واServer زi) د1H وe ¬ ﺡto Peer
71
( واﺡة إ< ال#ل ر# إر3"; ¬ ﺡServer Based Network gtع ا1: وا،ﻩh 1ه
¬tع ا1: أ* ا، (%&' اgh ةwiH2( ا,$ <-K i.;ز1"$ Server م ال1,; وServer
.$ 3"P ل#رs( ا-/K ن h g" اD%' اB* "; / وآ، Router ل الoj B* 3"h
(# رClient الD#+; وIP Multicast الC-/P g"( اK1/)/ إ< اClient م ال/ا
(K1/)/ اgh ةwiH2< ا-K i.;ز1"$ Router م ال1,; ¬ ﺡRouter واﺡة إ< ال
.Routing Table *ﺱ"!* ال
72
:One to Multi-Groups (K1/)* B* +tل إ< أآ#رs ا-2
73
:Using Multicast Sockets with .NET: k
< ال-K :h+.P اوت وgh Multicasting الI* D*."( اT آ,$# :ﺡ+V
ت-/. ا7 هDST" اB* ءg'$ B& ف1# : وهi$ ( ا!ﺹClasses والMembers
Conference System ء ^م:&$ م1,:# C ذ.$( و-t*2 اB* (K1/)* i-K ¨&Oو
... Multicasting < ال-K ا/".*
:S"ى ا1# ¨,ﺡP ت-/K أيMulticast Group م إ< ال/e( ا-/K مw-P e
udpClient Object ;+.P .$ C ذ3"; و، ﺡد/ اIP Multicasting والport < ال-K
ي7 اIP Multicasting ; ال+.P 3"; JoinMulticastGroup Method "!ام ال#$و
:g-; / إﻩ وآ3: ف1#
C #:
UdpClient sock = new UdpClient(5020);
sock.JoinMulticastGroup(IPAddress.Parse("225.100.0.1"), 50);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
VB.NET:
Dim sock As UdpClient = New UdpClient(5020)
sock.JoinMulticastGroup(IPAddress.Parse("225.100.0.1"), 50)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
VB.NET:
sock.DropMulticastGroup(IPAddress.Parse("225.100.0.1"))
VB.NET:
mcastSocket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram,
ProtocolType.Udp)
Group الgh ﻩj; إد+ ي7 اIP الi إ: ﺱ3u Address List ;+."$ م1, k
/ وآBind د1t/"!ام ا#$ ت1%ﺱ$ iO$+ ﺱﻩT:$ ان1:. اDj; User الD.) أو
: g-;
74
C #:
IPAddress localIPAddr = IPAddress.Parse(Console.ReadLine());
mcastSocket.Bind(IPlocal);
VB.NET:
Dim localIPAddr As IPAddress = IPAddress.Parse(Console.ReadLine)
mcastSocket.Bind(IPlocal)
:g-; /ﺡد آ/ان ا1:. اi : وﺱMulticast Option ; ال+."$ م1, 3k
C #:
MulticastOption mcastOption;
mcastOption = new MulticastOption(localIPAddr);
VB.NET:
Dim mcastOption As MulticastOption
MulticastOption(localIPAddr New = mcastOption)
ات+"*رو$ (uou د1t/ ا7 ه7jGP ¬ ﺡSetSocketOption <-K +" ا3u B*و
UDP أوTCP أوSocket <-K أوIPv6 <-K أوIP <-K +"ى ا1"ول "ﺡ; *ﺱ2ا
Multicast < إIP 3k 1; ه+ * إذIP <-K +"ف ﺱ"!م ا1# 7 ه:" ﺡghو
"رje اB%/;;( و1K (hk; إ+ ¬ ﺡ+"ع ا1 ﺡدgt ا+"* ا&روgh وGroup
:ا ﺱ+j وأDropMembership (;1K أو إءAddMembership ;ﻩ1K (hk إB$
:g-; /'ﻩ و آ $ :/9 ي7 واMulticastOption Object إﻩ ال
C #:
mcastSocket.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership,mcastOption);
VB.NET:
Dim mcastOption As MulticastOption
mcastOption = New MulticastOption(localIPAddr)
Socket ; ال+.P B* e أو$e IP Multicasting "!ام ال#$ ل#رs اIO"ﺡ"< ﺱ
< إPort ال39 ورIP Multicasting د ال:# وإUDP Connection "!ام ال#$ Object
¬ ﺡsendto method "!ام ال#$ ل#رs اIO" وﺱ... IPEndPoint Object ال
(#ل ر#رs g-; / وآIPEndPoint Object والdata as Bytes Array الi :ﺱ
:(S
C #:
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,
ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse((“225.100.0.1”), 5020);
byte[] data = Encoding.ASCII.GetBytes(msg.Text);
server.SendTo(data, iep);
server.Close();
msg.Clear();
msg.Focus();
75
VB.NET:
Dim server As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Parse("225.100.0.1"),
5020)
Dim data As Byte() = Encoding.ASCII.GetBytes(msg.Text)
server.SendTo(data, iep)
server.Close
msg.Clear
msg.Focus
Memory Stream "!ام ال# اB* $e ot* رة1ل ﺹ#ر آBinary Data ل#رsو
C ذ.$ وByte Array < إi-;1ﺡP 3u Stream («< ه-K ة+اآ7 اgh رة1S اB;w!"
:g-; / وآsendto Method "!ام ال#$ i#إر
C #:
MemoryStream ms = new MemoryStream();
PictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arrImage = ms.GetBuffer();
ms.Close();
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,
ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(“225.100.0.1”), 5020);
server.SendTo(arrImage,iep);
VB.NET:
Dim ms As MemoryStream = New MemoryStream
PictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage As Byte() = ms.GetBuffer
ms.Close
Dim server As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Parse("225.100.0.1"),
5020)
server.SendTo(arrImage, iep)
ا!صIP Multicast ﺡ; الP B* e أو$e (K1/)* B* &ل,"#e اIO"ﺡ"< ﺱ
3"; وReceive Method "!ام ال#$ &ل ا&ت,"# ا3u م إﻩ/e( و اK1/)/$
:list Box gh ik+K( وS (#&ل ر,"#e g-; / آCذ
C #:
UdpClient sock = new UdpClient(5020);
sock.JoinMulticastGroup(IPAddress.Parse(“225.100.0.1”), 50);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
VB.NET:
Dim sock As UdpClient = New UdpClient(5020)
76
sock.JoinMulticastGroup(IPAddress.Parse("225.100.0.1"), 50)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim data As Byte() = sock.Receive(iep)
Dim stringData As String = Encoding.ASCII.GetString(data, 0, data.Length)
listBox1.Items.Add(iep.Address.ToString + " :_ " + stringData)
Receive الB* &ل ا&ت,"#e memory Stream رة ﺱ"!م ال1&ل ﺹ,"#eو
ة+* رة1 إ< ﺹi-;1ﺡP 3u Stream Data («< ه-K ة+اآ7 اgh i:;w!P وMethod
:g-; / وآimage.FromStream Method "!ام ال#$ ى+jأ
C#:
UdpClient sock = new UdpClient(5020);
sock.JoinMulticastGroup(IPAddress.Parse(“225.100.0.1”));
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
VB.NET:
Dim sock As UdpClient = New UdpClient(5020)
sock.JoinMulticastGroup(IPAddress.Parse("225.100.0.1"), 50)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim data As Byte() = sock.Receive(iep)
Dim stringData As String = Encoding.ASCII.GetString(data, 0, data.Length)
listBox1.Items.Add(iep.Address.ToString + " :_ " + stringData)
ل ال#( إر-/. Network Stream "!ام ال# اIO" ﺱe :ﺡ¶ أo/ اB* -1
gh *"ح+d 1 وهTCP Socket Connection د1H وi*"!ا# ا-O"; إذMulticasting
Binary ل#رs memory Stream "!ام ال#$ i:K ض." و;ﺱMulticasting ال
... sendto method ال+&K Stream
( أو%&V د1Hم وK ( ﺡgh loopback كMulticasting "!ام ال# اC:%/; e -2
CSPم اK ( ﺡgh Multicasting ت ال,&OP B* ( أي$+)P IO"ﺱP B C7 لSPا
.(%&'$
،دة."* تiH B* D&,"ﺡ¬ ;ﺱ$ (K1/)* B* +t إ< أآ3:; ز أنiH D% B%/; -3
.تK1/)* ةK <ل إ#رs اIO" ;ﺱC7آ
sendto ال+&K Multicasting Data ل ال#رs (ﺡ1/ﺱ/( ا.ن اﺱ1%P دة. اgh -4
Stream والBinary Reader & Writer "!ام ال# اC:%/; C7 *ﺡودةMethod
... i:* e$ &ل,"#eل وا#رs Reader & Writer
C7 i%-/P g" اNetwork Topology D ¨h وIP Multicast "ر الj( ا-/K 3"P -5
.. ,$# "ﻩ:$ * 1ﺡدة وه/ اB;و:.$ ," اB* $e
77
:Multicasting Conferencing Systems '?" *=وع م ا
'
ات3k
ة+kﺡ/ء ا, $ +kﺡ/م ا1,; ¬( ﺡT( ﺹh+d د1Hض و+"T ف1# ¨&O"ا ا7 هgh
(;"ذ رؤ#2 اIO" ;ﺱ/"ذ وآ#2ون ا+; بoO اD.H :; ه+ ﻩ إذ$om أ*م.$ BK
IO" ;ﺱ/ آPower Point Slides < ال-K ة+kﺡ/ض ا+K (%*( إ< إhks$ ﻩ$om
... Text Chatting "!ام#$ "ذ#2 اI* ب ا"ﺡثoOا
ات+/Pa* ^مg( رﺱ( وه/^( أuou <ات إ+/Pa/ ^م ا3ﺱ,"$ :م ه1, ف1#
م1, ف1# (; ا&اgh ،(S:ات ا+/Pa/" و^م ا%/ اO# ات+/Pa* و^م1;Tا
:g" اD%' اgh /* و آ+&- (ﺱ+( اV' اD/.$
DirectX 9 الI* D*."P g"( واH ا!رClasses الB* (K1/)* Microsoft : ت+hو
ت أو أي1S أو اScanner ا أو ال+*% اI* D*." i*"!ا# اIO"ة ﺡ¬ ﺱ+V&*
Direct Show Dot Net Classesف ﺱ"!م ال1# ¨&O"ا ا7 هghى و+j( أh+m
,ﺡe i# إرIO" ﺡ¬ ﺱPicture box < ال-K ik+Kا و+*% ا+&K رة1ط ﺹ,"e
* 1 وهSendto method والmemory Stream "!ام ال#$ Multicast Group إ< ال
.. ,$# :$
/وع وآ+'/ إ< اDirect Show Classes ال3 ف1# i*"!ا# اIO"وﺡ"< ﺱ
:g-;
78
: "!ام#$ iK"ف ﺱ1# i.* D*." <"وﺡ
C #:
using DShowNET;
using DShowNET.Device;
VB.NET:
imports DShowNET
imports DShowNET.Device
:g" اD%' اgh /ا آ+*% ا+&K ل#رs* ا+$ D%V ن1%#و
D'P (;ا$ :K لjدsز اiH "رjs DeviceSelector Class ف ﺱ"!م ال1#
:g-; /* وآ+&ا
C #:
DeviceSelector selector = new DeviceSelector( capDevices );
selector.ShowDialog( this );
79
dev = selector.SelectedDevice;
VB.NET:
Dim selector As DeviceSelector = New DeviceSelector(capDevices)
selector.ShowDialog(Me)
dev = selector.SelectedDevice
: g-; /;ة آH method 'ء $ م1, ف1# ا+*% ا+&K رة1S"ط اs و
C #:
void OnCaptureDone()
{
try {
Trace.WriteLine( "!!DLG: OnCaptureDone" );
toolBarBtnGrab.Enabled = true;
int hr;
if( sampGrabber == null )return;
hr = sampGrabber.SetCallback( null, 0 );
int w = videoInfoHeader.BmiHeader.Width;
int h = videoInfoHeader.BmiHeader.Height;
if( ((w & 0x03) != 0) || (w < 32) || (w > 4096) || (h < 32) || (h > 4096) )
return;
int stride = w * 3;
GCHandle handle = GCHandle.Alloc( savedArray, GCHandleType.Pinned );
int scan0 = (int) handle.AddrOfPinnedObject();
scan0 += (h - 1) * stride;
Bitmap b = new Bitmap( w, h, -stride, PixelFormat.Format24bppRgb, (IntPtr)
scan0 );
handle.Free();
savedArray = null;
Image old = pictureBox.Image;
pictureBox.Image = b;
if( old != null ) old.Dispose();
toolBarBtnSave.Enabled = true;}
catch( Exception){}
}
VB.NET:
Private Sub OnCaptureDone()
Try
Trace.WriteLine("!!DLG: OnCaptureDone("
toolBarBtnGrab.Enabled = True
Dim hr As Integer
If sampGrabber Is Nothing Then
Return
End If
hr = sampGrabber.SetCallback)Nothing(0 ،
Dim w As Integer = videoInfoHeader.BmiHeader.Width
Dim h As Integer = videoInfoHeader.BmiHeader.Height
If)) w And& H03) <> 0 (OrElse) w < 32 (OrElse) w > 4096 (OrElse) h < 32 (
OrElse) h > 4096 (Then
Return
80
End If
Dim stride As Integer = w * 3
Dim handle As GCHandle = GCHandle.Alloc(savedArray,
GCHandleType.Pinned(
Dim scan0 As Integer = CInt)handle.AddrOfPinnedObject(()
scan0 += (h - 1) * stride
Dim b As Bitmap = New Bitmap(w, h, -stride, PixelFormat.Format24bppRgb ،
New IntPtr(scan0((
handle.Free()
savedArray = Nothing
Dim old As Image = pictureBox.Image
pictureBox.Image = b
If Not old Is Nothing Then
old.Dispose()
End If
toolBarBtnSave.Enabled = True
Catch e1 As Exception
End Try
End Sub
:رة1Sط ا,"( ا-/K ار+/"#e ﻩh g"د ا1%( اhk وإTimer D/K 3u
C #:
int hr;
int size = videoInfoHeader.BmiHeader.ImageSize;
savedArray = new byte[ size + 64000 ];
VB.NET:
Dim hr As Integer
Dim size As Integer = videoInfoHeader.BmiHeader.ImageSize
savedArray = New Byte(size + 64000) {}
gh ﻩ.رة و1Sل ا# إرmethod ف ﺱ"!م1# +j2ف ا+Oرة إ< ا1Sل ا#رsو
:g-; / وآTimer
C #:
try
{
MemoryStream ms = new MemoryStream();
pictureBox.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arrImage = ms.GetBuffer();
ms.Close();
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,
ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(textBox1.Text), 5020);
server.SendTo(arrImage, iep);
server.Close();}
catch (Exception){}
81
VB.NET:
Try
Dim ms As MemoryStream = New MemoryStream
pictureBox.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage As Byte() = ms.GetBuffer
ms.Close
Dim server As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Parse(textBox1.Text),
5020)
server.SendTo(arrImage, iep)
server.Close
Catch generatedExceptionVariable0 As Exception
End Try
(; رؤB* B%/"; ف1# /ﻩ آ$om <ا إ+*% ا+&K رة1Sل ا# إر+kﺡ/ اIO" ;ﺱ:وه
D#+# ¬( ﺡ%-# e (%&' "!ا*ﻩ# ا:ض ه+"T ف1#ا و+*% ا+&K ﻩ$om
I;ز1P Access Point الe1"; ف1# وUnicast ب ال1-#G$ Access Point ا&ت إ< ال
3i i-#+; وMulticast Group إ< الB/:/ء اK2 اI/H <ا&ت إ
:g" اD%' اgh / وآBroadcast "!ام ال#$
ة7P#2( اK1/)* B"K1/)* < إ3:; +kﺡ/ن ا h ¨$ اﺱD%' اgh ¶ﺡo /وآ
بoO( اK1/)* و،i-K ﻩ$om رة1 ﺹD&,"ﺱ# ¬ ﺡ225.100.1.1 gوه
82
ل#رs( ا-/K ن h ;ﺡ¶ اo / وآ.. iرة إ1S اD#+; ف1# g" وا224.100.0.1
... Unicast "!ام ال#$ 3"P Access Point2 والAccess Point1 الB$
*+$ إ'ءB* $e ، ﻩ$om (;"ذ رؤ#2 وا3"ذه#ب رؤ;( أoO اIO"وﺡ"< ;ﺱ
رة1S&ل ا,"#e ,$# i:ﺡ+V g" اmethod ﺱ الT ﺱ"!م:# ¬&ل ﺡ,"#eا
:g" اD%' اgh /; آH New Form D/.$ 39 &ء-و
C #:
using System.Net.Sockets ;
using System.Net;
using System.IO;
using System.Threading;
VB.NET:
imports System.Net.Sockets
imports System.Net
imports System.IO
imports System.Threading
void Image_Receiver()
{
UdpClient sock = new UdpClient(5020);
sock.JoinMulticastGroup(IPAddress.Parse(textBox1.Text));
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
83
byte[] data = sock.Receive(ref iep);
MemoryStream ms = new MemoryStream(data);
pictureBox1.Image = Image.FromStream(ms);
sock.Close();
}
VB.NET:
Sub Image_Receiver()
Dim sock As UdpClient = New UdpClient(5020)
sock.JoinMulticastGroup(IPAddress.Parse(textBox1.Text))
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim data As Byte() = sock.Receive(iep)
Dim ms As MemoryStream = New MemoryStream(data)
pictureBox1.Image = Image.FromStream(ms)
sock.Close()
End Sub
(-/.$ D'" ^م ا+uG"; e <" ﺡThreading "!ام ال# اB* $e iK"وﺡ"< ﺱ
"!ام ال#e g"د ا1%ﻩ اh Ik وTimer D/.$ 39 C7$ م1, <" وﺡ، &ل,"#eا
: Threading
C#:
Thread myth;
myth= new Thread (new System.Threading .ThreadStart(Image_Receiver));
myth.Start ();
VB.NET:
Dim myth As Thread
myth = New Thread(New System.Threading.ThreadStart(Image_Receiver))
myth.Start
39 JPEG Image File («< ه-K ا+*% ا+&K (O,"-/رة ا1S اB;w!P B* B%/"P <"وﺡ
:g-; /ﻩ آK"# واsaveFileDialog 'ء $
C #:
try
{
saveFileDialog1.Filter = "JPEG Image (*.jpg)|*.jpg" ;
if(saveFileDialog1.ShowDialog() == DialogResult.OK)
{
VB.NET:
Try
saveFileDialog1.Filter = "JPEG Image (*.jpg)|*.jpg"
If saveFileDialog1.ShowDialog = DialogResult.OK Then
Dim mypic_path As String = saveFileDialog1.FileName
pictureBox1.Image.Save(mypic_path)
84
End If
Catch generatedExceptionVariable0 As Exception
End Try
<" وﺡ، Video Conference System ال1ول وه2وع ا+'/ اB* ءi"e ا3P 9 :وه
D/.$ م1, ف1# Power Point * ال+$ "!ام#$ ة+kﺡ/ض ا+K +kﺡ/ اIO";ﺱ
... "%/ اO# ات+/Pa* وع+'*
* ال+$ "!ام#$ ة+kﺡ/ض ا+K B* "ذ#2 اB%/P 1وع ه+'/ا ا7 هB* فiا
، (&-Oة اwiH"ذ إ< أ#2ز اiH B* "%/ اO# رة1 ﺹD#+"# ¬ ﺡPower Point
م1," Classes ى إ'ء1# ءgV gh ¨$* اﺱ+& اBK ل#رs( ا-/K -"!P eو
3u B* وMulticast Group إ< الi# إر3u B*" و%/ اO# رة1ط ﺹ,"$
... Data Show Projector "!ام#$ بoO< ا-K ik+K وi&,"#ا
زiH <-K ة+kﺡ/ح ا+'$ م1,; "ذ#2ن ا h g" اD%' اB* ¶ﺡo /وآ
(; أﺡدg( ه-/. ا7ن ه h ;ﺡ¶ أo /ب وآoOرة إ< ا1S اD#+; وgS!'ا
(K1/)* إ'ءB* $e Bآe Full || Half Duplex B)هP$ i-.H B%/; /) وآPeا
i-#+;ﻩ وP+k"ذ *ﺡ#2ض ا+.; ¬"ذ ﺡ#2 إ< اO اB* ل#رs( ا-/. ;ةH
رة1S اD#+; "ذ إذ#2< ا-K زiH ض+K بoO أﺡ اIO"ب و;ﺱoO( اK1/)* <إ
... "ذ#2( اK1/)* <إ
D%' اgh /; آH New Form D/.$ 39 "%/ اO# رة1ل ﺹ#* إر+$ 'ءsو
:g"ا
85
:g-; /" وآ%/ اO# رة1ط ﺹ,"e Three Classes D/.$ م1, ف1# (; ا&اgh
C #:
using System;
using System.Runtime.InteropServices;
namespace SampleGrabberNET
{
//This class shall keep the GDI32 APIs being used in our program.
public class PlatformInvokeGDI32
{
[DllImport("gdi32.dll",EntryPoint="DeleteObject")]
public static extern IntPtr DeleteObject(IntPtr hDc);
[DllImport("gdi32.dll",EntryPoint="BitBlt")]
public static extern bool BitBlt(IntPtr hdcDest,int xDest,int
yDest,int wDest,int hDest,IntPtr hdcSource,int xSrc,int ySrc,int RasterOp);
[DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")]
public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc,
int nWidth, int nHeight);
[DllImport ("gdi32.dll",EntryPoint="CreateCompatibleDC")]
86
public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
[DllImport ("gdi32.dll",EntryPoint="SelectObject")]
public static extern IntPtr SelectObject(IntPtr hdc,IntPtr bmp);
#endregion
VB.NET:
System Imports
System.Runtime.InteropServices Imports
SampleGrabberNET Namespace
.This class shall keep the GDI32 APIs being used in our program'
PlatformInvokeGDI32 Class Public
<("DllImport("gdi32.dll",EntryPoint:="DeleteObject>_
IntPtr As (IntPtr As hDc ByVal)DeleteObject Function Shared Public
Function End
<("DllImport("gdi32.dll",EntryPoint:="BitBlt>_
As xDest ByVal ،IntPtr As hdcDest ByVal)BitBlt Function Shared Public
As hDest ByVal ،Integer As wDest ByVal ،Integer As yDest ByVal ،Integer
As ySrc ByVal ،Integer As xSrc ByVal ،IntPtr As hdcSource ByVal ،Integer
Boolean As (Integer As RasterOp ByVal ،Integer
Function End
<("DllImport ("gdi32.dll",EntryPoint:="CreateCompatibleBitmap>_
ByVal ،IntPtr As hdc ByVal)CreateCompatibleBitmap Function Shared Public
IntPtr As (Integer As nHeight ByVal ،Integer As nWidth
Function End
<("DllImport ("gdi32.dll",EntryPoint:="CreateCompatibleDC>_
IntPtr As (IntPtr As hdc ByVal)CreateCompatibleDC Function Shared Public
Function End
<("DllImport ("gdi32.dll",EntryPoint:="SelectObject>_
87
As bmp ByVal ،IntPtr As hdc ByVal)SelectObject Function Shared Public
IntPtr As (IntPtr
Function End
End Region#
[DllImport("user32.dll",EntryPoint="GetDC")]
public static extern IntPtr GetDC(IntPtr ptr);
[DllImport("user32.dll",EntryPoint="GetSystemMetrics")]
public static extern int GetSystemMetrics(int abc);
[DllImport("user32.dll",EntryPoint="GetWindowDC")]
public static extern IntPtr GetWindowDC(Int32 ptr);
[DllImport("user32.dll",EntryPoint="ReleaseDC")]
public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDc);
#endregion
88
}
//This structure shall be used to keep the size of the screen.
public struct SIZE
{
public int cx;
public int cy;
}
}
VB.NET:
System Imports
System.Runtime.InteropServices Imports
SampleGrabberNET Namespace
.This class shall keep the User32 APIs being used in our program '
PlatformInvokeUSER32 Class Public
<("DllImport("user32.dll",EntryPoint:="GetDC>_
IntPtr As (IntPtr As ptr ByVal)GetDC Function Shared Public
Function End
<("DllImport("user32.dll",EntryPoint:="GetSystemMetrics>_
Integer As (Integer As abc ByVal)GetSystemMetrics Function Shared Public
Function End
<("DllImport("user32.dll",EntryPoint:="GetWindowDC>_
IntPtr As (Int32 As ptr ByVal)GetWindowDC Function Shared Public
Function End
<("DllImport("user32.dll",EntryPoint:="ReleaseDC>_
(IntPtr As hDc ByVal ،IntPtr As hWnd ByVal)ReleaseDC Function Shared Public
IntPtr As
Function End
End Region#
89
Integer As cx Public
Integer As cy Public
Structure End
Namespace End
¬* ﺡ+& اgh +V&* D%'$ i*!"ف ﺱ1# g" واCaptureScreen.cs :tu
: PlatformInvokeUSER32 Class والPlatFormInvokeGDI32 Class الI* D*.";
C #:
using System;
using System.Drawing;
namespace SampleGrabberNET
{
//This class shall keep all the functionality for capturing the desktop.
public class CaptureScreen
{
#region Public Class Functions
public static Bitmap GetDesktopImage()
{
//In size variable we shall keep the size of the screen.
SIZE size;
90
PlatformInvokeGDI32.BitBlt(hMemDC, 0, 0,size.cx,size.cy, hDC, 0, 0,
PlatformInvokeGDI32.SRCCOPY);
//We select the old bitmap back to the memory device context.
PlatformInvokeGDI32.SelectObject(hMemDC, hOld);
//We delete the memory device context.
PlatformInvokeGDI32.DeleteDC(hMemDC);
//We release the screen device context.
PlatformInvokeUSER32.ReleaseDC(PlatformInvokeUSER32.GetDesktopWindo
w(), hDC);//Image is created by Image bitmap handle and stored in local
variable.
Bitmap bmp = System.Drawing.Image.FromHbitmap(hBitmap);
//Release the memory to avoid memory leaks.
PlatformInvokeGDI32.DeleteObject(hBitmap);
//This statement runs the garbage collector manually.
GC.Collect();//Return the bitmap
return bmp;
}//If hBitmap is null return null.
return null;
}
#endregion
}
}
VB.NET:
Imports System
Imports System.Drawing
Namespace SampleGrabberNET
'This class shall keep all the functionality for capturing the desktop.
Public Class CaptureScreen
#Region" Public Class Functions"
Public Shared Function GetDesktopImage ()As Bitmap
'In size variable we shall keep the size of the screen.
Dim size As SIZE
91
'We create a compatible bitmap of screen size using screen device context.
hBitmap = PlatformInvokeGDI32.CreateCompatibleBitmap(hDC, size.cx,
size.cy(
'As hBitmap is IntPtr we can not check it against null. For this purspose
IntPtr.Zero is used.
If Not hBitmap.Equals(IntPtr.Zero (Then
'Here we select the compatible bitmap in memory device context and keeps
the reference to Old bitmap.
Dim hOld As IntPtr = CType)PlatformInvokeGDI32.SelectObject(hMemDC,
hBitmap), IntPtr(
'We copy the Bitmap to the memory device context.
PlatformInvokeGDI32.BitBlt(hMemDC, 0, 0,size.cx,size.cy, hDC, 0, 0,
PlatformInvokeGDI32.SRCCOPY(
'We select the old bitmap back to the memory device context.
PlatformInvokeGDI32.SelectObject(hMemDC, hOld(
'We delete the memory device context.
PlatformInvokeGDI32.DeleteDC(hMemDC(
' We release the screen device context.
PlatformInvokeUSER32.ReleaseDC(PlatformInvokeUSER32.GetDesktopWindo
w(), hDC' (Image is created by Image bitmap handle and stored in local
variable.
Dim bmp As Bitmap = System.Drawing.Image.FromHbitmap(hBitmap(
'Release the memory to avoid memory leaks.
PlatformInvokeGDI32.DeleteObject(hBitmap(
'This statement runs the garbage collector manually.
GC.Collect' ()Return the bitmap
Return bmp
End If' If hBitmap is null return null.
Return Nothing
End Function
#End Region
End Class
End Namespace
:(" اmethod " ال% ف1# رة1S ا3) ﺡgh 3% ا"ﺡIO"وﺡ"< ﺱ
C #:
public Bitmap ResizeBitmap( Bitmap b, int nWidth, int nHeight )
{
Bitmap result = new Bitmap( nWidth, nHeight ); using( Graphics g =
Graphics.FromImage( (Image) result ) ) g.DrawImage( b, 0, 0, nWidth,
nHeight );
return result;
}
VB.NET:
Public Function ResizeBitmap(ByVal b As Bitmap, ByVal nWidth As Integer,
ByVal nHeight As Integer) As Bitmap
Dim result As Bitmap = New Bitmap(nWidth, nHeight)
' Using
Dim g As Graphics = Graphics.FromImage(CType(result, Image))
Try
92
g.DrawImage(b, 0, 0, nWidth, nHeight)
Finally
CType(g, IDisposable).Dispose()
End Try
Return result
End Function
VB.NET:
imports System.Net
imports System.Net.Sockets
imports System.IO
Multicast Group إ< الi#" و إر%/ اO# رة1ط ﺹ,"e Timer D/.$ م1, 3u
: ﺡد/ا
C #:
Bitmap bt = new Bitmap(CaptureScreen.GetDesktopImage());
picScreen.Image = ResizeBitmap(bt, 352, 200 );
MemoryStream ms = new MemoryStream();
picScreen.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arrImage = ms.GetBuffer();
ms.Close();
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(textBox1.Text), 5020);
server.SendTo(arrImage,iep);
server.Close();
VB.NET:
Dim bt As Bitmap = New Bitmap(CaptureScreen.GetDesktopImage)
picScreen.Image = ResizeBitmap(bt, 352, 200)
Dim ms As MemoryStream = New MemoryStream
picScreen.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage As Byte() = ms.GetBuffer
ms.Close
Dim server As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Parse(textBox1.Text),
5020)
server.SendTo(arrImage, iep)
server.Close
93
:Full/Half Duplex Multicast Text Conferencing System -3
Text Chat Multicast "!ام ال#$ "ذ#2&( ا"ﺡث إ< ا-O اIO"وﺡ"< ;ﺱ
:g" اD%' اgh /; وآH New Form 'ء $ م1, ف1# Conference System
VB.NET:
imports System.Net
imports System.Net.Sockets
imports System.Text
imports System.Threading
:K (#+ اD#+"# ¬ل ﺡ#رs( ا-/K اء+Hs (" اmethod ف ﺱ"!م ال1#
: ﺹS!/ اTextbox الgh (#+( ا$" آ.$ Enter < ال-K >ا
C #:
private void msg_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{if(e.KeyChar == '\r'){
try{
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,
ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(txt_host.Text), 5020);
94
byte[] data = Encoding.ASCII.GetBytes(msg.Text);
server.SendTo(data, iep);
server.Close();
msg.Clear();
msg.Focus();
}
catch(Exception){}}}
VB.NET:
Private Sub msg_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs)
If e.KeyChar = Microsoft.VisualBasic.Chr(13) Then
Try
Dim server As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp)
Dim iep As IPEndPoint = New
IPEndPoint(IPAddress.Parse(txt_host.Text), 5020)
Dim data As Byte() = Encoding.ASCII.GetBytes(msg.Text)
server.SendTo(data, iep)
server.Close()
msg.Clear()
msg.Focus()
Catch generatedExceptionVariable0 As Exception
End Try
End If
End Sub
(-&,"ﺱ/( ا#+ض ا+."# ¬&ل ﺡ,"#e( ا-/. ("د ا1t/ف ﺱ"!م ا1#و
:ﺹS!* list Box gh
C #:
public void server()
{
try
{
UdpClient sock = new UdpClient(5020);
sock.JoinMulticastGroup(IPAddress.Parse(txt_host.Text), 50);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
95
VB.NET:
Public Sub server()
Try
Dim sock As UdpClient = New UdpClient(5020)
sock.JoinMulticastGroup(IPAddress.Parse(txt_host.Text), 50)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim data As Byte() = sock.Receive(iep)
Dim stringData As String = Encoding.ASCII.GetString(data, 0,
data.Length)
listBox1.Items.Add(iep.Address.ToString + " :_ " + stringData)
sock.Close()
listBox1.Focus()
msg.Focus()
myth.Abort()
Catch generatedExceptionVariable0 As Exception
End Try
End Sub
ﻩ الh gK"# واTimer D/.$ 39 ، Threading "!ام ال# اB* $e iK"#eو
:g-; / وآThread "!ام ال#$ (,$ اﺱmethod
C #:
Thread myth;
myth= new Thread (new System.Threading .ThreadStart(server));
myth.Start ();
VB.NET:
Dim myth As Thread
myth = New Thread(New System.Threading.ThreadStart(server))
myth.Start
timer1.Enabled = true "!ام#$ لSPe< زر ا-K > ا:K Timer الD' ف1#
:g"د ا1%( اhk $ 39 لSPeء اi زر إghو
C #:
timer1.Enabled = false;
txt_host.ReadOnly = false;
msg.Enabled=false;
try
{
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(txt_host.Text), 5020);
byte[] data = Encoding.ASCII.GetBytes("has Left the Room");
server.SendTo(data, iep);
server.Close();
msg.Clear();
msg.Focus();
}
catch(Exception){}
96
VB.NET:
timer1.Enabled = False
txt_host.ReadOnly = False
msg.Enabled = False
Try
Dim server As Socket = New Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp)
Dim iep As IPEndPoint = New IPEndPoint(IPAddress.Parse(txt_host.Text),
5020)
Dim data As Byte() = Encoding.ASCII.GetBytes("has Left the Room")
server.SendTo(data, iep)
server.Close
msg.Clear
msg.Focus
Catch generatedExceptionVariable0 As Exception
End Try
97
Dot Net Networks & TCP/IP Programming
Chapter 5
Application Layer Programming
A. DNS Programming
B. SMTP Programming
C. POP3 Programming
D. HTTP Programming
E. Web Services & XML Programming
F. FTP Programming
98
\>\ ا[ ا>
] ا
ت%&' وا+"s اgh ﺱ"!مP g" ا!*ت ا3 أهB* واﺡةDNS (*j +&".P
< إDomain Name ( ال/H+P (-/.$ م,$ DNS (T و+S"!P و،مK D%'$
DNS وداتw* B* اH ة+&( آK1/)* لoj B* C ذ3";ﺱ و%. وإ< اB* Domain IP
(-/. ا7&أ هP ، ((:.* ة+"h D آi$ (ة ا&ت ا!ﺹK9 ¬;"ﺡ$ م1,P g") وا
Domain Name لjد $ C وذClient B ل$ ا!صDomain ال-O$ Client Aم ال,$
(ة ا&ت ا!ﺹK9 gh ﺱﻩT ;+."$ Client B م ال9 ,& *ﺱ3P ¬ ﺡ- ﻩ$ ا!ص
الB;و:K <-K ي1"ﺡP ت$ ةK9 <-K Client Dي آ1" ;ﺡ/ آ- DNS Server ب
Domain ان1:K <-K i-jا$ ¬&ﺡ$ م1,; ¬ ﺡlocal DNS ل$ </ﺱP وDomains
DNS Server الB* B*ان او1:K -O$ م1,; ); 3 ذا h Domain Name لoj B*
B;w!"$ ور$ م1,; وClient ان إ< ال1:.ل ا#ر $ DNS Server م ال1,; إ;)د.$و
:g" اD%' إ< ا+^ ا، ﻩ$ ا!صLocal DNS gh ان1:.ا
g" واSystem.Net Name Space "!ام#$ DNS I* D*." ا::%/; اوتgh
ا!ﺹ( بMethods الD< آ-K ي1"ﺡP g" واDNS Classes الI/H <-K ي1"ﺡP
+d وSynchronous Methods B*اw"* B/ﺱ9 <دس إ1t/ ا7 ه3ﺱ,P وDNS
:g-; / آg وهAsynchronous Methods B*اw"*
VB.NET:
Private hostname As String = Dns.GetHostName
99
:g-; / آi:* Dﺱ"!م آP وGetHostByAddress د1t/ و اGetHostByName د1t/ا
C #:
IPHostEntry host_ip = Dns.GetHostByName(Computer_Name); // ان1:. ا-)
3#e"!ام ا#$
IPHostEntry host_name = Dns.GetHostByAddress(IP_Address); // 3#e ا-)
ان1:."!ام ا#$
VB.NET:
Private host_ip As IPHostEntry = Dns.GetHostByName(Computer_Name)
Private host_name As IPHostEntry = Dns.GetHostByAddress(IP_Address)
i -# إذا أرHost Name IH+P ¬ ﺡOverloaded Method g وهResolve د1t/ا
IPHostEntry الgh Host Name i -# إذا أرHost Address IH+P وIP Address
. (,$دس اﺱ1t/"!ام ا# اBK i*"!ا# ا-"!; eو
: i*"!ا#( ا,;+m B&; لt/ا ا7وه
C #:
using System;
using System.Net;
class FMO_DNS
{
public static void Main()
{
IPHostEntry IPHost = Dns.Resolve("www.yahoo.com"); // ;+ ي7 اB*او
ﻩ$ ا!صg$ ي2( اh+.*
Console.WriteLine(IPHost.HostName); // D*%$ B* او3# ا-H
Class FMO_DNS
100
: Asynchronous Methods (:*اw"/ ا+d دس1t/ اu
: i-K (-t*2 اB* وEnd أوBegin (/-%$ دةK &أPو
EndResolve وEndGetHostByName وBeginResolve وBeginGetHostByName
ط+"'; e ن اﻩ1%$ -"!P i:% (:*اw"/دس ا1t/ اgh اﺡل1 ه/ آi-/K (.&m
(tة ا1O!ل إ< ا,"Á$ /ﺱP e B*اw"/ اB ﺡgh *+& اD/K ل/آs ه7T:P
ر*ﺱ1T;+& اT!$ (« اﺱ7ﺱ& هP 9 وi-/K ءi" ﺡ( اgh e* إ+& اgh
/ﺱ"!م آP( و:*اw"* +( ا,;+O"!ام ا#$ S:; C7 *+& اgh مK D%'$
Begin___ : g-;
public static IAsyncResult BeginResolve(string hostname,
AsyncCallback requestCallback, object stateObject)
ﻩ الh ف+.; gt ا+"*ول و ا&رو2 ا+"* ا&روgh 3 #1i اIk و3"; ¬ﺡ
: g-; / آEnd____ و;ﺱ"!م، delegate eت إoj* +;+/"$ C /ﺱP وdelegate
¬( ﺡ%&'< ا-K دة1H1/ اIP’s الI/H -)$ م1,; >ﺱ$ وD*V لt* :وه
(ل ا!ﺹoj B* ProcessStartInfo B* host names ال-H <-K D/.;
د1t/ل اoj B* host name <ﻩ إ-;1ﺡP 3"; ¬ ﺡStandardOutput
D;1ﺡP 3"; 3u Collicaion gh i:;w!P 3u GetMachineNamesFromProcessOutput
"!ام ال# ا3"; .&m .. Dns.Resolve د1t/ل اoj B* B;و:K <ء إ/#2ا
: لt/ ا1ا ه7 وهProcessStartInfo ل$ ا!صcollection اءة ال+, StreamReader
C #:
using System;
using System.IO;
using System.Diagnostics;
using System.Net;
using System.Collections.Specialized;
namespace NetworkIPs
{
public class Names
{
public StringCollection GetNames()
{
ProcessStartInfo _startInfo = new ProcessStartInfo("net","view");
_startInfo.CreateNoWindow = true;
_startInfo.UseShellExecute = false;
_startInfo.RedirectStandardOutput = true;
Process _process = Process.Start(_startInfo);
StreamReader _reader = _process.StandardOutput;
StringCollection _machineNames =
GetMachineNamesFromProcessOutput(_reader.ReadToEnd());
StringCollection _machineIPs = new StringCollection();
foreach(string machine in _machineNames)
{
_machineIPs.Add(IPAddresses(machine));
}
101
return _machineIPs;
}
private static string IPAddresses(string server)
{
try
{
System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding();
// Get server related information.
IPHostEntry heserver = Dns.Resolve(server);
//assumin the machine has only one IP address
return heserver.AddressList[0].ToString();
}
catch
{
return "Address Retrieval error for " + server;
}
}
//string manipulations
private StringCollection
GetMachineNamesFromProcessOutput(string processOutput)
{
string _allMachines = processOutput.Substring( processOutput.IndexOf("\\"));
StringCollection _machines= new StringCollection();
while(_allMachines.IndexOf("\\") != -1 )
{
_machines.Add(_allMachines.Substring(_allMachines.IndexOf("\\"),
_allMachines.IndexOf(" ",_allMachines.IndexOf("\\")) -
_allMachines.IndexOf("\\")).Replace("\\",String.Empty));
_allMachines = _allMachines.Substring(_allMachines.IndexOf("
",_allMachines.IndexOf("\\") + 1));
}
return _machines;
}
}
102
VB.NET:
Imports System
Imports System.IO
Imports System.Diagnostics
Imports System.Net
Imports System.Collections.Specialized
103
Loop
Return _machines
End Function
End Class
104
SMTP & POP3 Programming :5.2
(/H+P (-/K BK ل1«ﺱ/ واDNS ل1آ1P+$ ()*+$ BK ¨$ء اﺱw) اgh :uﺡP
g# gh (-/. ا7i$ م,( اT آ:$ﺱ و%.$ وIP <ق إO 3# اB* Domain
( ال,&O ى+j2ت اe1آ1Pو+& ا.$ ()*+$ BK ف "ﺡث1# ءw)ا ا7 هgh ، ربV
;+& ا+&K D#+ل ا# إرBK ل1«ﺱ/ واSMTP ال: ه/ وهApplication Layer
D/K لoj B* ن1$w( إ< ا#+ اDﺹ1P (-/K BK ل1«ﺱ/ واPOP3 و الgو+"%sا
HTTP الBK ف "ﺡث1# ¨ﺡoء اw) اgh وMail Server الB* i Download
اﻩ3-. اI* ، Web الTSP gh g## أD%'$ ي ;ﺱ"!م7 واProgramming
.. (H اﺡ:K iﺡ+V <-K gPÀ ف1# ة+tت آe1آ1Pو+$ H1;
الgh g## أD%'$ SMTP Simple Mail Transfer Protocol ل ال1آ1P+$ و ;ﺱ"!م
. D#+ اIncoming Dﺹ1P وOutgoing ل#ت إر-/K أيMTA
105
ا!صInternet Provider الB* SMTP ﺡﺱبC-/P C أB* آG" اe&¨ ;) أوO"
Outlook Express * ال+$ لoj B* C$ ا!صAccount ( ال$+)P IO"ﺱP C$
B* *+&( ا$+)P IO"ﺱP SMTP ﺡﺱبC-/P e : إذا آWindows الI* د1H1/ا
Control : B* i"&t"$ C وذIIS ;¨ ال+m BK Virtual SMTP Server ل إ'ءoj
gh / آSMTP والIIS الB* D آD.TP B* آGP Panel >> Add/Remove Programs
: g" اD%'ا
106
إﻩ وD#+/ان ا1:K ﻩh Ik1; gt واD#+/ان ا1:K ﻩh Ik1; ول2 ا+"*ا+&ا
. (#+ﺹ ا: I$ا+( وا#+ان ا1:. ¬t ا+"*ا+&ا
D%' اgh / آNew Form 'ء $ 39 gو+"%s; ا+&ل ا#ر $ م1,; *+$ D/.و
:g"ا
VB.NET:
imports System.Web.Mail;
VB.NET:
Try
Dim from As String = textBox1.Text
Dim to As String = textBox2.Text
Dim subject As String = textBox3.Text
Dim body As String = textBox4.Text
SmtpMail.SmtpServer = textBox5.Text
107
SmtpMail.Send(from, to, subject, body)
Catch ex As Exception
Msgbox(ex.Message)
End Try
: *> ه* ﺩا
+ ذآ/ آIIS الB* SMTP الD.TP B* آG" ;) اBآe ،H D%'$ D/.; د1%ا ا7ه
SMTP gh ,&ﻩ *ﺱT;+.P 3P ي7 )واSMTP ا!ص ب الIP Ik1$ 39¨ و$ اﺱgh
SMTP Server الB* ;آ أG" ;) ا، SMTP Server Textbox ل$( Virtual Server
CDO2 - Microsoft Collaboration Data Objects (&"%/"!ام ا# ا3K; C;
<ل إ1ﺹ1 اIO" ;ﺱe ﻩG$ ك+&!; Exception <-K DSﺡP ف1# e وإVersion 2
D/.P وWindows 2000 وWindows XP I* i*!"# ا3"; دة. اgh ، CDO2 Object
Microsoft Exchange I* أوSMTP Virtual Server & الtP :K gkا+"h اD%'$
<-K DSﺡP ف1ﺱh 5.5 أوExchange Version 5 ﺱ"!مP : أ* إذا آServer2003
. +آ7¨ ا$ اﺱException ال
try
{
MailMessage mm = new MailMessage();
108
mm.BodyFormat = MailFormat.Html; // ﺱ"!م/ر*ت ا1Tع ا1
mm.Body = "<html><body><h1>" + textBox4.Text + "</h1></html>";
SmtpMail.Send(mm);
}
catch (Exception ex) {MessageBox.Show(ex.Message);}
VB.NET:
imports System.Web.Mail;
Try
Dim mm As MailMessage = New MailMessage
mm.From = textBox1.Text
mm.To = textBox2.Text
mm.Subject = textBox3.Text
mm.Headers.Add("Reply-To", "fadi822000@yahoo.com")
mm.Headers.Add("Comments", "This is a test HTML message")
mm.Priority = MailPriority.High
mm.BodyFormat = MailFormat.Html
mm.Body = "<html><body><h1>" + textBox4.Text + "</h1></html>"
SmtpMail.Send(mm)
Catch ex As Exception
Msgbox(ex.Message)
End Try
3)ن أو ﺡ1 أيIk وB* C:%/; ا7 وهHTML د ال1( ;ﺱ"!م آ#+ ا3ﺱH ﺡ¶ أنe
ف+." "ى:/$ HTML ال3ﺱ9 IH )راHTML "!ام ال#$ ﻩ-/K B%/; ءgV أو أي
); ت,ﺡ-* ل#< إر-K در9 *+& اD.) و، ((.ا+"( ا$+%( اﺱ- ا7< ه-K
: د1%$ g-; /ﻩ وآh -/ ا3# وإدراج اMailAttachment سo%"!ام ا#ا
C #:
MailAttachment myattach =
new MailAttachment("Your_Attached_File_path.extension",
MailEncoding.Base64);
Design ( ال-/K .&m ، D* آD%'$ SMTP * ال+$ D/K B* :i" ا9 :وه
.*+&/ة ا+&j< ﺡﺱ ذوق وذآء و-K /".P ه+dو
VB.NET:
Dim myattach As MailAttachment = New
MailAttachment("Your_Attached_File_path.extension", MailEncoding.Base64)
109
POP3- Post Office Protocol Version 3 Programming : k
MUA - Mail ء الwH gh D/.; ي7 واPOP3 ل ال1آ1P+$ (Tن و h ,$# :uﺡP /آ
BK ل1«ﺱ/ﻩ ا1 آgh B/%P TCP ل ال1آ1P+$ B/k 110 Port <-K User Agent
Mail الB* i Download D/K لoj B* Client ن1$w( إ< ا#+ اDﺹ1P (-/K
Client ز الiH gh ##د أ1H1/ واMail Folder الgh D#+¶ اTﺡP ¬ ﺡServer
:g" اD%' إ< ا+^أ
ﻩoj B/h Interactive Mail Access Protocol – IMAP ل1آ1P+$ POP3 D D ا&اB*و
وﺱMail server الgh Bآeﻩ و$ (ﺹj Mail Folder ﺱ"!م إ'ء/ اIO";ﺱ
اءة+9 إذ أن91ﺱ اT:$ ﻩP«# وIMAP ات الw* B* 7 ه+&".Pن و1$wز اiH gh
Client B* +t أآB* iPاء+9 IO"ﺱP ¬ ﺡServer ل الoj B* ة+V&* 3"P (#+ا
3)ﺡ$ Mail Server Administrator D#+دم اj +;* 3%ﺡP gﻩ هh (-%'/ اBآeو
: g" اD%' إ< ا+^ *ﺡودة أi".# دة. اgh ن1%P إذMail Folder ال
¨, ا"ﺡ.$ ﻩPاء+9 3"; وMail Server B/k I,; Mail Folder ﺡ¶ أن الe
B/%P "ﻩ-%'* ن h :-9 / آBآe ور+/( ا/-ﺱ"!م وآ/ ا3# اB* Authentication
ﻩ1 آPOP3 "!ام ال#ة ا+&%آت ا+' S:; ا7 Mail Folder ( ال.# (; *ﺡودgh
Mail Server لDj دe وClient ال1( ه. اﺱgh 3%ي ;"ﺡ7h (. *ﺡود اﺱ+d
.i$ Administrator
+*2م اw-; *)"ﻩ إذ+&$ ف &أ1# D#+اءة ا+9 (-/. POP3 د ال/"Kر ا+9 : أ/$و
3"; ¬ ﺡSystem.IO وSystem.Net وSystem.Net.Sockets Name Space "!ام#ا
د1Hﺡﺹ وTP (-/.$ م,- Socket "!ام ال#$ Server الI* صj Session D/K
110
صj Treelist أوList Box gh i:;و:K («&."$ م1,; ده1H ﺡ( وgh;ة وH D#ر
B* (#+ Download D/.$ Client م ال1,; < إﺡاه-K > ا:K( وHﺡﺱ اﺡ
.Textbox gh ik+K 3u Mail Folder إ< الMail Server ال
: g" اD%' اgh +i^; /; آH New Form 'ء $ 39 ¨&O"و
VB.NET:
imports System.Net
imports System.Net.Sockets
imports System.IO
Server الI* Session 'ءs Stream والSocket الI* D*." ا3"; ﺡ¶ اﻩe
. POP3 Server الB* (#+اءة ا+9 وTCP ل ال1آ1P+$ "!ام#$
– gﺱ+س اo%; ا+.P .$ * )أي+&ا;( ا$ gh ("ر; ا."( اhk $ 39 3u
: (Global Declaration ( ال,O:* gh
C #:
public TcpClient Server;// فi$ C وذg$ g# g"ل ا1آ1P+$ B* %)$ق او,"Vا
(ﺱ-)إ'ء ا
public NetworkStream NetStrm;// ﺱ"!م/*ت ا1-.* ل#رs ف ﺱ"!*ﻩ1#
public StreamReader RdStrm; // 3 ب1& اB* اردة1*ت ا1-./اءة ا+,Server
public string Data; // D#+د اK (h+.* gh i*"!ا#e
public byte[] szData; // 3 ب1& اB* اردة1 ا&ت اB;w!"Server
public string CRLF = "\r\n";// ..;H +O# D/. *+& اgh i*"!ا#e
111
VB.NET:
Public Server As TcpClient
Public NetStrm As NetworkStream
Public RdStrm As StreamReader
Public Data As String
Public szData As Byte()
Public CRLF As String = "" & Microsoft.VisualBasic.Chr(13) & "" &
Microsoft.VisualBasic.Chr(10) & ""
// Login Process
// ب1&ه إ< ا+;+/Pور و+/( ا/-ﺱ"!م وآ/ ا3#ل اjإدServer
Data = "USER "+ User.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
Data = "PASS "+ Passw.Text+CRLF;
// ارد ا!ص1وق ا:اءة ﺹ+9 3"; ور+/( ا/-ﺱ"!م وآ/ ا3# اB* آG" ا.$
ﺱ"!م/$
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
Send STAT command to get information ie: number of mail and size
STAT +*2"!ام ا#$ POP3 Server gh دة1H1/ اD#+د اK (h+./
Data = "STAT"+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
112
VB.NET:
Server = New TcpClient(POPServ.Text, 110)
NetStrm = Server.GetStream
RdStrm = New StreamReader(Server.GetStream)
Status.Items.Add(RdStrm.ReadLine)
Data = "USER " + User.Text + CRLF
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray)
NetStrm.Write(szData, 0, szData.Length)
Status.Items.Add(RdStrm.ReadLine)
Data = "PASS " + Passw.Text + CRLF
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray)
NetStrm.Write(szData, 0, szData.Length)
Status.Items.Add(RdStrm.ReadLine)
Data = "STAT" + CRLF
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray)
NetStrm.Write(szData, 0, szData.Length)
Status.Items.Add(RdStrm.ReadLine)
Data = "QUIT" + CRLF
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray)
NetStrm.Write(szData, 0, szData.Length)
Status.Items.Add(RdStrm.ReadLine)
NetStrm.Close
RdStrm.Close
39 ( ة+j2( ا#+اءة ا+9 3"# gkا+"h اD%'$ )ارد1وق ا: ﺹB* D#+اءة ا+,و
: Read Last Come Email Button إ< الg"د ا1%( اhk $
C #:
string szTemp;
Message.Clear();
try
{
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
szTemp = RdStrm.ReadLine(); // i"K&m 3"; <" ﺡ9a* D%'$ (#+ اB;w!P
if(szTemp[0]!='-')
{
while(szTemp!=".")
{
Message.Text += szTemp+CRLF;
szTemp = RdStrm.ReadLine();
}
}
else
{Status.Items.Add(szTemp);}
}
catch(InvalidOperationException err){Status.Items.Add("Error:
"+err.ToString());}
113
VB.NET:
Dim szTemp As String
Message.Clear
Try
Data = "RETR 1" + CRLF
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray)
NetStrm.Write(szData, 0, szData.Length)
szTemp = RdStrm.ReadLine
If Not (szTemp(0) = "-"C) Then
While Not (szTemp = ".")
Message.Text += szTemp + CRLF
szTemp = RdStrm.ReadLine
End While
Else
Status.Items.Add(szTemp)
End If
Catch err As InvalidOperationException
Status.Items.Add("Error: " + err.ToString)
End Try
>ﺱ$ لt* ا7 اوت وهgh *)"ﻩ+$ و3 ب1& اD/K (Tح آ+'$ /9 9 :وه
¬ ﺡh1#و+%/$ ا!صOutlook ل$ &ﻩV D*وع آ+'* D/. ﻩ:* ا&ءIO"ﺱP
e$ اردة1 اD#+ض ا+. رر1-& إآﺱ+"s$ ا!صDLL ال-* "!ام# اIO"ﺱP
D#+ اIk1 Tree List D/K IO"ﺱP / آHTML Code D%V <-K ik+K B*
iPاء+, ¨$د اﺱ1% اgh ﻩ.k و3"; g-ﺱ-ﺱP 39( ر# رD% ن1%; ¬اردة ﺡ1ا
، اردة1ة ا+j2( ا#+اءة ا+,$ م1,; ي7 واgkا+"h اD%'$ 1 39+"!* ا#ﺡ¬ ا
114
HTTP – Hyper Text Transfer Protocol Programming :5.3
-m Dﺹ1" ﺱ"!م/ل ا1آ1P+&< اﻩ ا-K مK D%'$ HTTP ( الT!ﺹ و-"P
< ال-K د+$ web server م ال9 3u Server ;1 إ< اUser Request ﺱ"!م/ا
ل ال%V أI/H D, IO"ﺱP آG"$ وServer Response < ب/ي ;ﺱ7 واRequest
إ< الWeb Server الB* .. +d و1;h ت و1رة و ﺹ1ﺹ وﺹ: اB* (Multimedia)
.Byte Stream object "!ام#$ Client Application
D%'$ "!ا*ﻩ# اg:.; ا7 وهApplication Layer < ال-K HTTP ل ال1آ1P+$ D/.;
< إ+^ اDNS,SMTP,POP3,FTP gh اﺡل1 ه/ﺱ"!م آ/( اiH واB* +V&*
:g" اD%'ا
115
VB.NET:
Imports System
Imports System.Net
Imports System.Text
Class DownloadData_Method
class DownloadFile_Method
{
public static void Main ()
{
WebClient wc = new WebClient();
string filename = "C:\\ra.zip";
wc.DownloadFile("http://www.personalmicrocosms.com/zip/ra.zip", filename);
Console.WriteLine("file downloaded");
}
}
VB.NET:
Imports System
Imports System.Net
Imports System.Text
Class DownloadData_Method
116
-) Serverن وال1$w اB$ Read Only Stream إ'ءi"T ووOpenRead -3
;+P ي7 اI91/- URL ال+;+/P .$ Stream Object gh ﻩ:;w!P *ﺡد وURL B* ت$
Stream الgh (w!/ض ا&ت ا+K IO" ﺱReadLine د1t/"!ام ا#$ﻩ وk+K
. HTML Code D%V <-K Object
. Stream Object ;( الi (h+./ Peek د1t/ﺱ"!م اP : (^ﺡo*
C #:
using System;
using System.IO;
using System.Net;
class OpenRead_Method
{
public static void Main ()
{
WebClient wc = new WebClient();
string response;
VB.NET:
Imports System
Imports System.IO
Imports System.Net
Class OpenRead_Method
117
cash control ع ال1 وHeaders د الK Dt* web host الBK (**ت ه1-.* -)
،(*i*ت ا1-./ اB* ه+dﺱ"!م و/ اEncoding ع ال1 وServer ال3#وا
:لt/ آg-; /و;ﺱ"!م آ
C #:
using System;
using System.Net;
class ResponseHeaders_property
{
public static void Main ()
{
WebClient wc = new WebClient();
byte[] response =
wc.DownloadData("http://www.google.com");
WebHeaderCollection whc = wc.ResponseHeaders;
Console.WriteLine("header count = {0}", whc.Count);
for (int i = 0; i < whc.Count; i++)
{
Console.WriteLine(whc.GetKey(i) + " = " + whc.Get(i));
}
}
}
VB.NET:
Imports System
Imports System.Net
Class ResponseHeaders_property
//Output:
//header count = 6
//Cache-Control = private
//Content-Type = text/html
//Set-Cookie = PREF=ID=6ae22f44980c5d78…
//7JRA; expires=Sun, 17-Jan-2038 19:14:
//Server = GWS/2.1
//Transfer-Encoding = chunked
//Date = Wed, 23 Nov 2005 10:10:58 GMT
118
Uploading to Web Server : k
: g وهWeb Server ا&ت إ< الD/ "ﺡMethods (.$ أرWebClient ال3K;
.$ C وذWeb Server إ< الStream Data ل#رs و;ﺱ"!مOpenWrite -1
;) أن.&m Web Page < ال-K "ﻩ$"; آ+ ي7ﺹ ا: وا-/- URL ان ال1:K +;+/P
: لt/ آg-; / و;ﺱ"!م آC7 ﺡتoS اC-/P
C #:
using System;
using System.IO;
using System.Net;
method_class OpenWrite
{
public static void Main ()
{
WebClient wc = new WebClient();
string data = "<h1>Welcome to My Page</h1>";
Stream strm = wc.OpenWrite("C:\\mypage.html");
StreamWriter sw = new StreamWriter(strm);
sw.WriteLine(data);
sw.Close();
strm.Close();
}
}
VB.NET:
Imports System
Imports System.IO
Imports System.Net
Class OpenWrite_method
119
Web إ< الByte ع1: اB* (h1TS* ;ت1" *ﺡD,: و;ﺱ"!مUploadData – 2
ر1Sﺹ ا: اDt* ا&تB* ع1 أيIh رioj B* IO"ﺱP C اg:.; ا7 وهServer
g-; / و;ﺱ"!م آByte Array < إi-;1ﺡP .$ web server إ< ال+d و1;Tا
: لt/آ
C #:
using System;
using System.Net;
using System.Text;
Method_class UploadData
{
public static void Main ()
{
WebClient wc = new WebClient();
string data = "This is The Text Before Converted it to Byte";
byte[] dataarray = Encoding.ASCII.GetBytes(data);
wc.UploadData("C:\\mydata.txt", dataarray);
}
}
VB.NET:
Imports System
Imports System.Net
Imports System.Text
Class UploadData_Method
إ< الLocal Computer الB* -* Ih+ د1t/ ا7ﺱ"!م هP وUploadFile -3
: لt/ آg-; /ﺱ"!م آPا وH "!ام#e( اOﺱ$ g وهWeb Host
C #:
using System;
using System.Net;
class UploadFile_Method
{
public static void Main ()
{
WebClient wc = new WebClient();
wc.UploadFile("http://www.yoursite.com", "C:\\myfile.html");
}
}
120
VB.NET:
Imports System
Imports System.Net
Class UploadFile_Method
using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;
class UploadValues_Method
{
VB.NET:
Imports System
Imports System.Collections.Specialized
Imports System.Net
Imports System.Text
Class UploadValues_Method
121
nvc.Add("lastname", "Abdel-qader")
Dim response As Byte() =
wc.UploadValues("http://localhost/mypage.aspx", nvc)
Console.WriteLine(Encoding.ASCII.GetString(response))
End Sub
End Class
ي7 واWeb Client Applications ت,&OP ()*+$ gh اءwH2 ا3 أهB* ءw)ا ا7 ه+&".;
و الHttpWebRequest Class الB* D"!ام آ# اBK ﻩh ف "ﺡث1#
: HttpWebResponse Class
class ProxyServer_Property
{
VB.NET:
Imports System
Imports System.Net
Class ProxyServer_Property
122
B* WebProxy Object ف+. 3u HttpWebRequest Object ا&ا;( الgh ف+.
IO" ﺱC ذ.$ وPort ال39 ورProxy Server ان ال1:K ﻩ: وﺱwebProxy سo%ا
I/H gh دةK دة1H1* ن1%P g" اProxy ("!ام ا!ﺹ#$ %)$د إ< أي او:#إ
.. HttpWebRequest Objects
"!ام ال#$ Server ;1ت إ< ا$ ل#رs HttpWebrequest "!ام ال# ا-2
: لt/ آg-; /ﺱ"!م آP وStreams
C #:
HttpWebrequest hwr =
(HttpWebRequest)WebRequest.Create("http://localhost");
Stream strm = hwr.GetRequestStream();
StreamWriter sw = new StreamWriter(strm);
sw.WriteLine(data);
VB.NET:
Dim hwr As HttpWebrequest = CType(WebRequest.Create("http://localhost"),
HttpWebRequest)
Dim strm As Stream = hwr.GetRequestStream
Dim sw As StreamWriter = New StreamWriter(strm)
sw.WriteLine(data)
ﻩ ال: وﺱStream Object ;+."$ م1, HttpWebRequest Object ; ال+.P .$
. GetRequestStream د1t/ل اoj B* Request Stream
إ< الServer ;1 اB* ت$ عHرs HttpWebResponse Object ﺱ"!م الP
7i BeginGetResponse د1t/ و اGetResponse د1t/ ﺡ¬ ﺱ"!م اClient
BeginGetResponse ى أن1# دس1t/ ا7( هT وgh ق+h H1; e( و-/.ا
. asynchronous Method +&".P
C #:
HttpWebRequest hwr =
(HttpWebRequest)WebRequest.Create(http://www.amazon.com);
hwr.CookieContainer = new CookieContainer();
: g-; / إﻩ آ: ﺱ3u HTTP Request الD&9 Cوذ
HttpWebResponse hwrsp = (HttpWebResponse)hwr.GetResponse();
hwrsp.Cookies = hwr.CookieContainer.GetCookies(hwr.RequestUri);
123
VB.NET:
Dim hwr As HttpWebRequest =
CType(WebRequest.Create("http://www.amazon.com"), HttpWebRequest)
hwr.CookieContainer = New CookieContainer
124
Web Services Programming :5.4
web الB$ DKT"( اTﻩ آh :$ وHTTP *)( ال+$ BK ¨$ء اﺱw) اgh :uﺡP
(T!ﺹ و-"P ،,$# ﻩ:K :uﺡP / D/%* ءw)ا ا7 ه+&".; وclient والserver
web ل$ دة1H1/ اMethods الB* دةT"#e( ا%* $ web services "!ام ال#ا
Simple ر لS"j ا1 وهSOAP ل ال1آ1P+$ "!ام#$ن و1$w* ا+$ Dj داserver
إ< الweb Services server الB* Result الD, 3"; Object Access Protocol
+&K D,:P ¬ ﺡXML - extensible Markup Language إ< الi-;1ﺡP .$ Client
Data ل ال1 وﺹDiﺱP 1"!ا*ﻩ ه# اB* فiن وا1$wز اiH < إHTTP ل ال1آ1P+$
I/H ( إذ أنT-"!/ وا&«ت اfirewalls ل الoj B* Client إ< الweb server الB*
( -"!P e و. 80 Port< ال-K D/.; ي7 واHTTP ل ال1آ1P+$ 3KP ت%&'«ت ا$
B* (K1/)* g وهHTML الgh Kا1,ﺱ اT ﺱ"!مP إذHTML الBK XML ال
: i-K لt/ وآ+&و( اآ+/$ w/"P Bآe <> </> الDt* Attributes والElements ال
<myStuff>
<myName>FADI Abdel-qader</myName>
<myTelephone>+962796...</myTelephone>
<myEmail>fadi822000@yahoo.com</myEmail>
<myAge>23</myAge>
<mySex>M</mySex>
</myStuff>
3"; ¬ ﺡSystem.xml Name Spaces "!ام#$ اوتgh iK"# ا3";و
: g-; / آXmlDocument Class الgh د1H1/ اLoad د1t/"!ام ا#$ iPاء+9
C #:
using System.Xml;
// Then you can Read any XML File as Below:
XmlDocument xDoc = new XmlDocument();
xDoc.Load(@"C:\myinfo.xml");
XmlNodeList name = xDoc.GetElementsByTagName("myName");
XmlNodeList telephone = xDoc.GetElementsByTagName("myTelephone");
XmlNodeList email = xDoc.GetElementsByTagName("myEmail");
XmlNodeList age = xDoc.GetElementsByTagName("myAge");
XmlNodeList sex = xDoc.GetElementsByTagName("mySex");
MessageBox.Show(
"Name: " + name[0].InnerText +"\n"+
"Telephone: " + telephone[0].InnerText +"\n"+
"Email: "+ email[0].InnerText +"\n"+
"Age: "+ age[0].InnerText +"\n"+
"sex: "+ sex[0].InnerText +"\n"
125
VB.NET:
Dim xDoc As XmlDocument = New XmlDocument
xDoc.Load("C:\myinfo.xml")
Dim name As XmlNodeList = xDoc.GetElementsByTagName("myName")
Dim telephone As XmlNodeList =
xDoc.GetElementsByTagName("myTelephone")
Dim email As XmlNodeList = xDoc.GetElementsByTagName("myEmail")
Dim age As XmlNodeList = xDoc.GetElementsByTagName("myAge")
Dim sex As XmlNodeList = xDoc.GetElementsByTagName("mySex")
Msgbox("Name: " + name(0).InnerText + "" & Microsoft.VisualBasic.Chr(10)
& "" + "Telephone: " + telephone(0).InnerText + "" &
Microsoft.VisualBasic.Chr(10) & "" + "Email: " + email(0).InnerText + "" &
Microsoft.VisualBasic.Chr(10) & "" + "Age: " + age(0).InnerText + "" &
Microsoft.VisualBasic.Chr(10) & "" + "sex: " + sex(0).InnerText + "" &
Microsoft.VisualBasic.Chr(10) & "")
126
;H ASP.NET Web Services وع+'* D/.$ م1, web services server 'ءsو
سo%ر;¬ ا1"$ م1, 3u System.Web.Services Name Spaces gK"وﺱ
:لt/ آg-; /وع وآ+'/- gﺱ+س اo%- WebService
C #:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://my_url.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public Service () {}
[WebMethod]
public int Add(int a, int b)
{
return a + b;
}
VB.NET:
Imports System
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace="http://my_url.com/")> _
<WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)> _
Public Class Service
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
Return a + b
End Function
End Class
127
I* <و2( ا/, اI/H P عHر $ م1,; C ذ.$ وB وA B"/9 &ل,"# ا3"; ¬ﺡ
+i^; / وآSOAP ل ال1آ1P+$ "!ام#$ XML D%V <-K Client ( إ< الt( ا/,ا
: g" اD%' اgh
ل$ ﻩ9h و إرDll File <¨ إ$س اﺱo% اD;1ﺡP e ;) أوClient * ال+$ 'ءsو
: g-; /"!ا*ﻩ آ# ا3"; وClient Resources
C #:
using System;
class Client_side
{
public static void Main(string[] argv)
{
My_main_class mm = new My_main_class();
int x = Convert.ToInt16(argv[0]);
int y = Convert.ToInt16(argv[1]);
int sum = mm.Add(x, y);
Console.WriteLine(sum);
}
}
}
128
VB.NET:
Class Client_side
(!ﺱ: اgh DﺹT"( اh) آP ف1# وWeb services الgh ت##2 ا:$ ا7%وه
..."ب% اB* (9ر1ا
129
: FTP – File Transfer Protocol Programming 5.5
ل ال1آ1P+$ 1 وهApplication Layer ت الe1آ1P+$ B* +jل أ1آ1P+$ ح+'$ :ف &أ ه1#
Ih و رdownloading D;w:P (-/K gh g## أD%'$ ي ;ﺱ"!م7 واFTP
ت%&'*)ت ا+$ -d اgh دة. وآFTP Server و إ< الB* تT-/اuploading
Port< ال-K :S"$ Serverم ال1,; ¬ ﺡClient/Server د1H< و-K /".P g"و ا
TCP Connection Oriented "!ام ال#$ 21 Port ال1 وهFTP D ﺹS!/ا
'ء $ Client الB* -m رود1 "^رe اIk1$ Server< ال,&; ¬ﺡProtocol
3"; ﺡتoS اB* آG" واAuthentication ¨,ت ا"ﺡ-/K اء+H إ.$ﻩ و.* Session
&ل,"# ا3"; ف1# ي7 واPort ال39ﺡ; رP 3"; ¬ﺱ( ﺡ-)$ < ا&ء-K (,hا1/ا
"P وServer الgh 20 Port ال+&K ن1$wز اiH <ل إ#رs ا3";ﻩ وoj B* ا&ت
: g" اD%' اgh /( آ-/. ا7ه
e ;) أوFTP Server زك كiH D/.; ¬ﺡ$ C; FTP *( الj D.T" :>*
: g" اD%' اgh +i^; / و آIIS الI* C; ("&t* FTP Services أن الB* آG"ا
130
Administrative Tools 3u Control Panel B* Services بi-.TP B* آG" ا3u B*و
: g" اD%' اgh +i^; / وآServices 3u
: g" اD%' اgh / آ+i^; ¬ﺡ$ IIS الgh ﻩ:* آG" ا3u
131
FTP Commands : vأو
3K; ¬ ﺡ+& إ< ﺡ آTelnet ( ال-/K FTP D "!ام#eل و اSPe( ا-/K '&ﻩP
I* m!"( ا-/K ioj B* 3"; g" وا+*وا2 اB* (K1/)* FTP ل ال1آ1P+$
: g" اD%' اgh /( آ-/. ا7 هP وRemote Host الI* أوServerال
132
ﻩ-,
أوPassive اء1# (ﺱ-)ع ا1 ;"ﺡ PASV
3"; Passive ﺡ( الgh إذ اﻩActive
Ih ﺡ( ورود أو رgh >,h لSPe اD.TP
. Server و إ< الB* -* أي
uploading & ل وSPeﺡﺹ ﺡ( اT Status أوSTAT
Downloading
D*." اgh ﻩ-K رف."* 1 ه/ آgوه Delete , cd , mkdir , rename …
^م الgh ات-)/ت و اT-/ اI*
DOS
Remote Host الI* (ﺱ-)ء اis Close أوQUIT
VB.NET:
imports System.IO
imports System.Reflection
133
parameter[1] = (string)"PUT " + thisFile.FullName + " /" +
thisFile.Name;
ITC.InvokeMember("execute", BindingFlags.InvokeMethod,null, ITCObject,
parameter);}
VB.NET:
Private Sub button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Dim thisFile As FileInfo = New FileInfo(tbFile.Text)
Dim ITC As Type
Dim parameter(2) As Object
Dim ITCObject As Object
ITC = Type.GetTypeFromProgID("InetCtls.Inet")
ITCObject = Activator.CreateInstance(ITC)
parameter(0) = CType(tbServer.Text, String)
parameter(1) = CType("PUT ", String) + thisFile.FullName + " /" +
thisFile.Name
ITC.InvokeMember("execute", BindingFlags.InvokeMethod, Nothing,
ITCObject, parameter)
End Sub
Name Space B/k د1H1/ واType Class ل الoj B* ITC ; ال+.P (; ا&اgh 3P
+;+/P gh i*"!ا#e C وذObject ع1: اB* Array :h+K 3u System.Reflection
ITC الB/k دة1H1/ واInvokeMember د1t/ إ< اFTP Server و ال-/ ا3#ا
... Control Object
: -)/ اgh ﻩ.h ر3"# ي7 ا-/) اP ف1#
C:\Inetpub\ftproot
134
: Web Class ﺩام الp اﺩوتFTP *< الo* اﻉ: 3k
Name Spaces B/k دة1H1/ واweb Class "!ام#$ FTP *)( ال+$ B%/;
و الWebRequest الI* D*." اgh /ﻩ آ.* D*."( ا-/K '&ﻩP وSystem.Net
::%/; ¬ ﺡHTTP *)( ال+$ gh i.* :-*.P g" و اClasses webResponse
: g-; / آg وهFTP Protocol الI* D*." i:* دةT"#eا
ي7 واWebClient سo%"!ام ا# اdot net Framework 2 3K د3P إذWebClient -
3"; وSystem.Net Name Spaces B* ﻩK"# ا3"; ي7 واFTP الI* D*." ا3K;
: g-; /ﻩ آT;+.P
C #:
using System;
using System.Net;
namespace Web_Client
{
class Program
{
public static void Main(string[] args)
{
string filename = "ftp://ms.com/files/dotnetfx.exe";
WebClient client = new WebClient();
client.DownloadFile(filename, "dotnetfx.exe");
}
}
VB.NET:
Imports System
Imports System.Net
Namespace Web_Client
Class Program
135
: g-; /ف آ+.; وFTP الI* D/.أ ا$ وD) و;ﺱ"!م "ﺱFtpRequestCreator -
C #:
using System;
using System.Net;
namespace FTP
{
public class FtpRequestCreator : IWebRequestCreate
{
public FtpRequestCreator()
{
}
VB.NET:
Imports System
Imports System.Net
Namespace FTP
C #:
using System;
using System.Net;
namespace FTP
{
public class FtpWebRequest : WebRequest
{
private string username = "Fadi";
136
internal string password = "fff";
private Uri uri;
private bool binaryMode = true;
private string method = "GET";
137
VB.NET:
Imports System
Imports System.Net
Namespace FTP
138
End Get
Set(ByVal value As String)
method = value
End Set
End Property
C #:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace FTP
{
public class FtpWebResponse : WebResponse
{
private FtpWebRequest request;
private FtpClient client;
139
VB.NET:
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Namespace FTP
C #:
using System;
using System.IO;
using System.Net.Sockets;
namespace FTP
{
internal class FtpWebStream : Stream
{
private FtpWebResponse response;
private NetworkStream dataStream;
140
VB.NET:
Imports System
Imports System.IO
Imports System.Net.Sockets
Namespace FTP
ﺩامp Server زC 5 إClient زC ]* %* < "?' ل3* : راﻉ
:Socket والStream ال
Stream الI* D*."$ وClient / Server B)*+$ 'ء $ م1, ف1# ءw)ا ا7 هgh
Stream ال+&K ﻩ# و إرByte Array < إ-/ اD;1"ﺡ$ م1, ف1# Library
ل أو ال#رs$ ء ا!صw)*)( ا+& و، TCP Connection وSocket "!ام ال#$
: g" اD%' اgh /; آH وع+'* 'ء $ 39 Client
VB.NET:
imports System.IO
imports System.Net
imports System.Net.Sockets
imports System.Text
141
: g"د ا1%( ا$"%$ 39 Send Button الgh
C #:
try
{
Stream fileStream = File.OpenRead(textBox1.Text);
// Alocate memory space for the file
byte[] fileBuffer = new byte[fileStream.Length];
fileStream.Read(fileBuffer, 0, (int)fileStream.Length);
// Open a TCP Connection and send the data
TcpClient clientSocket = new TcpClient(textBox2.Text,8880);
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Write(fileBuffer,0,fileBuffer.GetLength(0));
networkStream.Close();
}
catch (Exception ex){MessageBox.Show(ex.Message);}
VB.NET:
Try
Dim fileStream As Stream = File.OpenRead(textBox1.Text)
Dim fileBuffer(fileStream.Length) As Byte
fileStream.Read(fileBuffer, 0, CType(fileStream.Length, Integer))
Dim clientSocket As TcpClient = New TcpClient(textBox2.Text, 8880)
Dim networkStream As NetworkStream = clientSocket.GetStream
networkStream.Write(fileBuffer, 0, fileBuffer.GetLength(0))
networkStream.Close
Catch ex As Exception
Msgbox(ex.Message)
End Try
<" وﺡStream Object ﻩ ب:;w!Pﻩ و#د إر1 ي7 ا-/اءة ا+,$ (; ا&اgh :/9
:/9 وByte ع1: اB* (h1TS* <ﻩ إ-;1ﺡP B* $e Socket ال+&K ﻩ# إرIO"ﺱ
B/k دة1H1/ واRead د1t/"!ام ا#$ &«"ﻩ.P 3u fileBuffer "ﻩ ب/"ﺱ$
TCP Connection "!ام ال#$ Server الI* لSP'ء ا $ :/9 C ذ.$ وfileStream
NetworkStream "!ام#$ Server إ< الfileBuffer ;ت ال1"ل *ﺡ# إر3P ¬ﺡ
... Class
وع+'* 'ء $ 39 ﻩ:;w!P و-/&ل ا,"# اBK ل1«ﺱ/ ا1 وهServer ءwH ()*+&و
: g" اD%' اgh +i^; /; آH
142
: (" اName Spaces ف ﺱ"!م1#
C #:
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.IO;
VB.NET:
imports System.Threading
imports System.Net
imports System.Net.Sockets
imports System.Text
imports System.IO
while(true)
{
thisRead=networkStream.Read(dataByte,0,blockSize);
fileStream.Write(dataByte,0,thisRead);
if (thisRead==0) break;
fileStream.Close();
}
lbConnections.Items.Add("File Written");
handlerSocket = null;
}
143
VB.NET:
Public Sub handlerThread()
Dim handlerSocket As Socket = CType(alSockets(alSockets.Count - 1),
Socket)
Dim networkStream As NetworkStream = New
NetworkStream(handlerSocket)
Dim thisRead As Integer = 0
Dim blockSize As Integer = 1024
Dim dataByte(blockSize) As Byte
SyncLock Me
Dim fileStream As Stream = File.OpenWrite("c:\upload")
While True
thisRead = networkStream.Read(dataByte, 0, blockSize)
fileStream.Write(dataByte, 0, thisRead)
If thisRead = 0 Then
' break
End If
fileStream.Close()
End While
lbConnections.Items.Add("File Written")
handlerSocket = Nothing
End SyncLock
End Sub
8880 Port< ال-K TCP Connection "T C;ة وذH ى+jد أ1t* ($"%$ 39 3u
: g-; / وآlistenerThread i/# اB% وi-K :S" واgkا+"h ا1وه
C #:
public void listenerThread()
{
80);8TcpListener tcpListener = new TcpListener(8
tcpListener.Start();
while(true)
{
Socket handlerSocket = tcpListener.AcceptSocket();
if (handlerSocket.Connected)
{
lbConnections.Items.Add(handlerSocket.RemoteEndPoint.ToString() +
" connected.");
lock (this)
{
alSockets.Add(handlerSocket);
}
ThreadStart thdstHandler = new
ThreadStart(handlerThread);
Thread thdHandler = new Thread(thdstHandler);
thdHandler.Start();
}
}
}
144
VB.NET:
Public Sub listenerThread()
Dim tcpListener As TcpListener = New TcpListener(8880)
tcpListener.Start()
While True
Dim handlerSocket As Socket = tcpListener.AcceptSocket
If handlerSocket.Connected Then
lbConnections.Items.Add(handlerSocket.RemoteEndPoint.ToString +
" connected.")
SyncLock Me
alSockets.Add(handlerSocket)
End SyncLock
Dim thdstHandler As ThreadStart = New ThreadStart(handlerThread)
Dim thdHandler As Thread = New Thread(thdstHandler)
thdHandler.Start()
End If
End While
End Sub
C #:
private void Form1_Load(object sender, System.EventArgs e)
{
IPHostEntry IPHost = Dns.GetHostByName(Dns.GetHostName());
145
VB.NET:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs)
Dim IPHost As IPHostEntry = Dns.GetHostByName(Dns.GetHostName)
lbConnections.Text = "My IP address is " + IPHost.AddressList(0).ToString
alSockets = New ArrayList
Dim thdListener As Thread = New Thread(New
ThreadStart(listenerThread))
thdListener.Start()
End Sub
;+."$ ih :/9 g" واlistenerThread Method ال7T:P 3P Thread "!ام ال#$
الB* gPG; -m ل أي1&9 3"# ¬ ﺡ8880 Port< ال-K ﻩ-.TP وtcpListener ال
ih 3"# g" واhandlerThread د1t/ء اK"# اC ذ.$ وPortا ال7< ه-K Client
ن%/ اgh i:;w!P وiPاء+9 3u Byte Array gh i:;w!P وStream Data &ل ال,"#ا
<-K ي1"ي ;ﺡ7 واStream ر ﻩ ال+* ¬ ﺡfileStream.Write "!ام ال#$ﺡد و/ا
... dataByte Array والthisRead -/ ا3#ا
146
Dot Net Networks & TCP/IP Programming
Chapter 6
Network Security Programming
147
\>\ ا[ ا>
] ا
unauthorized ل1!/ ا+&d ل1j اB* ;( ا&ت/ﺡ$ B*2 اB* ة+%T!ﺹ ا-"P
Access
: i/ وأه#ة أK "!ام#$
"!ام ال#$ ,$# ه+ ذآg";( ا/ اﺡ# أI/H اوتgh /Kد
(K+T"&ت ا%/ اB* (/!k (K1/)* <-K ي1"ﺡP g" واSecurity Namespaces
g" اD%' اgh / آgوه
Ch و+T'P ت-/K * ;!ﺹD%$ 3"iP g""&( ا%/ اg وه:Cryptography in .NET
g## أD%'$ ﺱ"!مPﺱ و%.$ وCipher Text < إClear Text B* ا&ت+T'P
3ﺱ,P IO" وﺱ، مo"#e ا:K ه+T'P Chل و#رs( ا-/K D&9 ا&ت+T'"
:gﺱم رﺱ( ه9( أuou < إih +T'"ق ا+m
: DES-Data Encryption Standard "!ام ال#$ +T'" ا3K; ي7س اo% ا-
DESCryptoServiceProvider
RC2CryptoServiceProvider : RC2 Algorithms 3K; ي7س اo% ا-
RijndaelManaged : Rijndael Managed Algorithms 3K; ي7س اo% ا-
+&K i#( وإر#+ ا+T'P g هDu/"/ب ا1-#2$ +T'" اgh "دة./( ا,;+Oا
9ا وH (K ن1%P 9 g" اGO!ن ﺱ&( ا h (,;+O ا7"!ام ه#$ Bآe (%&'ا
ت-/K i-K ى+)Pق و+ﺱP 9 ( أو#+ ا,h <دي إa; /* ا&ت7 ه.$ ,T
Network الB* w)ﺡP 9 g" اDi ا3) اﺡBK Cة ه+T' اCh (ﺡو/
ى ال1"< *ﺱ-K 3"P +T'"( ا-/K D.)$ (-%'/ ا7 هD ﺡ3Pو.. Bandwidth
3"; ¬ ﺡCryptoStream Class ( ال-/. ا7i ﺱﻩ و;ﺱ"!مT Stream
IV +T'" اCT "حT* وEncryption Kay +T'""ح اT* +T'" B"ﺡT* "!ام#ا
(-/K gh B"ﺡT/ﺱ اT "!ام#ط ا+"'; وInstallation Victor Decryption
أوMemoryStream الI* ¨$س اﺱo% و;ﺱ"!م ا+T'" اCh و+T'"ا
أوTripleDES أوDES اء1# +T'"ع ا1 وStream Data ر ﻩ ال+/ ¬ ﺡFileStream
148
16 B* B"ﺡT/ اoن آ1%"; إذ;) أنTripleDES ف ﺱ"!م ال1# لt/ وآ، RC2
... Bits
C #:
byte[] Key = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x10,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
byte[] IV = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x10,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
csw.Write(Encoding.ASCII.GetBytes(phrase), 0, phrase.Length);
csw.FlushFinalBlock();
textBox1.Text=Encoding.ASCII.GetString(cryptdata, 0, (int)ms.Length);
VB.NET:
Dim Key As Byte() = {&H1, &H2, &H3, &H4, &H5, &H6, &H7, &H8, &H9,
&H10, &H11, &H12, &H13, &H14, &H15, &H16}
Dim IV As Byte() = {&H1, &H2, &H3, &H4, &H5, &H6, &H7, &H8, &H9, &H10,
&H11, &H12, &H13, &H14, &H15, &H16}
csw.Write(Encoding.ASCII.GetBytes(phrase), 0, phrase.Length)
csw.FlushFinalBlock()
textBox1.Text=Encoding.ASCII.GetString(cryptdata, 0, CInt(ms.Length))
149
Symmetric Stream Decryption Example:
C #:
byte[] Keyy = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x10,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
byte[] IVv = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x10,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
ms.Position = 0;
byte[] data = new byte[1024];
CryptoStream csr = new CryptoStream(ms,tdes.CreateDecryptor(Keyy,
IVv),CryptoStreamMode.Read);
int recv = csr.Read(data, 0, data.Length);
string newphrase = Encoding.ASCII.GetString(data, 0, recv);
textBox1.Text=newphrase;
VB.NET:
Dim Keyy As Byte() = {&H1, &H2, &H3, &H4, &H5, &H6, &H7, &H8, &H9,
&H10, &H11, &H12, &H13, &H14, &H15, &H16}
Dim IVv As Byte() = {&H1, &H2, &H3, &H4, &H5, &H6, &H7, &H8, &H9,
&H10, &H11, &H12, &H13, &H14, &H15, &H16}
ms.Position = 0
Dim data As Byte() = New Byte(1023) {}
Dim csr As CryptoStream = New CryptoStream(ms,
tdes.CreateDecryptor(Keyy, IVv), CryptoStreamMode.Read)
Dim recv As Integer = csr.Read(data, 0, data.Length)
Dim newphrase As String = Encoding.ASCII.GetString(data, 0, recv)
textBox1.Text=newphrase
B* "!ام أي#$ (-#+/ ا&ت ا+T'"$ (; ا&اgh م1, ت%&'*)ت ا+$ gh
ال+&K i#رs Stream <ة إ+T'/ل ا&ت ا1 ﺡ3u +T'" (,$ اﺱ#2ا
(#+&ل ا,"#$ D&,"ﺱ/ف ا+Oم ا1,; 3u ، Network Stream "!ام ال#$ Socket
g ه/ن آ1%P +T'" اCh (-/K ، Socket ال+&K Network Stream "!ام ال#$
Byte gh نw!P وmemory stream ( إ< ال#+ اD/ﺡP 3u (*!"ﺱ/ارز*( ا1!ا
:g" اD%' اgh /ى وآ+jة أ+* (#ل إ< ر1ﺡP أنB%/; ه:K Array
150
ب1-#2 اB* * أ+t أآ1 وهDu/"* +ب ا1-#2 ا:Asymmetric algorithms -B
;ﺱ"!م+T'" اCT وPublic Kay مK "حT* "!ام#$ ا&ت+T'P إذDu/"/ا
128 Bits و;ﺱ"!مB"ﺡT/ اB$ (9oK ك:ن ه1%; وPrivate Kay صj "حT*
Du/"* + ا+T'" اوت ا/K&ت ود- +T'" ا# أDh أ1 وه+T'"
Tow Algorithms Classes "!ام#$ Private Kay "ح ا!صT/ ا+T'P 3K; ي7وا
:gوه
1- DSACryptoServiceProvider for Digital Signature Algorithm
م1,; لt/( وآ#+ اD#+* ;( ا'!ﺹ1 هB* ¨, ا"ﺡi:* فiوا: (/9+ اI9ا1"ا
+T'"$ م1,; C ذ.$ وHash Function"!ام ال#$ (#+ !ﺹ-* 1"$ D#+/ا
g/9 رI91"ﺱ"!م آ# ي7"ح ا!ص واT/ اB;1%" 1P 3P ي7( ا#+!ﺹ ا-*
CT$ م1,h 3-"ﺱ/$ ¨-."; /$ * أ،(#+ اI* م."ح اT/ اD#+; 3u D#+/-
(*ارز1!ﺱ اT "!ام#$ C ذ3"; م و;) أن."ح اT/"!ام ا#$ !ﺹ-/ ا+T'P
وهg"( ا#+!ﺹ ا-* ذا آن h ،!ﺹ-/ ا+T'P gh D#+/ اi.&P اg"ا
D#+* أن ا'!ﺹB* ¨,ه ;"ﺡ:K D#+/ وه اg" اiﺱT g ه3-"ﺱ/ا
. ﺱﻩT 1( ه#+ا
"حT/ ا1" DSACryptoServiceProvider الB* instance Ð': ف1# (; ا&اgh
1 ﻩSﺡT وByte Array gh ﻩw! وHash sign Value ن ال1% 3u م وا!ص.ا
ﺱﻩT 1ر أن ا'!ﺹ ه+, ه:K i$'P ذا h ¨$ﺱ$ رﻩ,; وH hash sign value
:g-; /( وآ-#+/( ا#+ﺹﺡ ا
C #:
using System;
using System.Security.Cryptography;
class DSACSPSample
{
151
}
public static byte[] DSASignHash(byte[] HashToSign, DSAParameters
DSAKeyInfo, string HashAlg)
{
try
{
//Create a new instance of DSACryptoServiceProvider.
DSACryptoServiceProvider DSA = new DSACryptoServiceProvider();
VB.NET:
Imports System
Imports System.Security.Cryptography
152
Console.WriteLine("The hash value was not verified.")
End If
Catch e As ArgumentNullException
Console.WriteLine(e.Message)
End Try
End Sub
Public Shared Function DSASignHash(ByVal HashToSign As Byte(), ByVal
DSAKeyInfo As DSAParameters, ByVal HashAlg As String) As Byte()
Try
'Create a new instance of DSACryptoServiceProvider.
Dim DSA As DSACryptoServiceProvider = New
DSACryptoServiceProvider()
C #:
public static bool DSAVerifyHash(byte[] HashValue, byte[] SignedHashValue,
DSAParameters DSAKeyInfo, string HashAlg)
{
try
{
//Create a new instance of DSACryptoServiceProvider.
DSACryptoServiceProvider DSA = new DSACryptoServiceProvider();
153
DSADeformatter.SetHashAlgorithm(HashAlg);
VB.NET:
Public Shared Function DSAVerifyHash)ByVal HashValue As Byte ،()ByVal
SignedHashValue As Byte ،()ByVal DSAKeyInfo As DSAParameters ،ByVal
HashAlg As String (As Boolean
Try
'Create a new instance of DSACryptoServiceProvider.
Dim DSA As DSACryptoServiceProvider = New DSACryptoServiceProvider()
154
2- RSACryptoServiceProvider
gh non inherited Class 1 وهDu/"* + ا+T'" اCh و+T'"اء ا+H إgh و;ﺱ"!م
1" C وذRSACryptoServiceProvider الB* ;H instance Ð': ف1# (;ا&ا
CT$ 3-"ﺱ/م ا1,; 3u B*( و#+ اI* م."ح اT/¨ اh+م وا!ص و."ح اT/ا
:g" اD%' اgh / آ3"P"ح ا!ص وT/"!ام ا#$ (#+ا
: RSA Algorithm "!ام ال#$ +T'" اCh و+T'"( ا,;+O gﺡk1P لt* :وه
C #:
using System;
using System.Security.Cryptography;
using System.Text;
class RSACSPSample
{
155
encryptedData = RSAEncrypt(dataToEncrypt,RSA.ExportParameters(false),
false);
VB.NET:
Imports System
Imports System.Security.Cryptography
Imports System.Text
156
'Display the decrypted plaintext to the console.
Console.WriteLine("Decrypted plaintext: {0}",
ByteConverter.GetString(decryptedData))
Catch e1 As ArgumentNullException
Console.WriteLine("Encryption failed.")
End Try
End Sub
VB.NET:
Shared Public Function RSAEncrypt)ByVal DataToEncrypt As Byte ،()ByVal
RSAKeyInfo As RSAParameters ،ByVal DoOAEPPadding As Boolean (As Byte()
Try
'Create a new instance of RSACryptoServiceProvider.
Dim RSA As RSACryptoServiceProvider = New RSACryptoServiceProvider()
'Import the RSA Key information. This only needs
'to include the public key information.
RSA.ImportParameters(RSAKeyInfo(
'Encrypt the passed byte array and specify OAEP padding .
'OAEP padding is only available on Microsoft Windows XP or
'later .
Return RSA.Encrypt(DataToEncrypt, DoOAEPPadding(
'Catch and display a CryptographicException
'to the console.
Catch e As CryptographicException
Console.WriteLine(e.Message(
Return Nothing
End Try
End Function
157
:p ا0=' 0 م. p د ا.3
=© ا
C #:
static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters
RSAKeyInfo,bool DoOAEPPadding)
{
try
{
//Create a new instance of RSACryptoServiceProvider.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Import the RSA Key information. This needs
//to include the private key information.
RSA.ImportParameters(RSAKeyInfo);
VB.NET:
Shared Public Function RSADecrypt)ByVal DataToDecrypt As Byte ،()ByVal
RSAKeyInfo As RSAParameters ،ByVal DoOAEPPadding As Boolean (As Byte()
Try
'Create a new instance of RSACryptoServiceProvider.
Dim RSA As RSACryptoServiceProvider = New RSACryptoServiceProvider()
'Import the RSA Key information. This needs
'to include the private key information.
RSA.ImportParameters(RSAKeyInfo(
158
ا&ت إذ+T'" ()*+& ا#2ى ا19 أ1 وه:Hashing algorithms -C
Message "!ام#$ 128 bits B* e$ <S9 آﺡ أ512 bits algorithm ﻩh ;ﺱ"!م
i" إ< ﺡiKH( وإر#+ ا+T'P Ch IO"ﺱP B : وهMAC Digest Algorithms
(/9+ اI9ا1" ا1P gh وPasswords ال1" g## أD%'$ ( و;ﺱ"!م,$اﺱ
الgh Password ور+/( ا/- آB;w!" ﺱ"!مP تe اﺡ-d اgh وDigital Signature
.B* اD%'$ Database
والSHA384Managed والSHA256Managed و الSHA1Managed و;ﺱ"!م ال
ComputeHash Method ﻩ ﺱ"!م ال:* وHash Object ;+." SHA512Managed
:لt/ آg-; / وآbyte Array gh ﻩ:;w!P وhash code ال1"
C #:
SHA1Managed shaM1 = new SHA1Managed ();
byte[] my_kay1= ASCIIEncoding.ASCII.GetBytes("convert this text to hash
code");
byte[] hashed_kay1 = shaM1.ComputeHash(my_kay1);
MessageBox.Show(ASCIIEncoding.ASCII.GetString(hashed_kay1));
VB.NET:
Dim shaM1 As SHA1Managed = New SHA1Managed
Dim my_kay1 As Byte() = ASCIIEncoding.ASCII.GetBytes("convert this text to
hash code")
Dim hashed_kay1 As Byte() = shaM1.ComputeHash(my_kay1)
Msgbox(ASCIIEncoding.ASCII.GetString(hashed_kay1))
Dim shaM2 As SHA256Managed = New SHA256Managed
Dim my_kay2 As Byte() = ASCIIEncoding.ASCII.GetBytes("convert this text to
hash code")
Dim hashed_kay2 As Byte() = shaM2.ComputeHash(my_kay2)
Msgbox(ASCIIEncoding.ASCII.GetString(hashed_kay2))
Dim shaM3 As SHA384Managed = New SHA384Managed
Dim my_kay3 As Byte() = ASCIIEncoding.ASCII.GetBytes("convert this text to
hash code")
Dim hashed_kay3 As Byte() = shaM3.ComputeHash(my_kay3)
Msgbox(ASCIIEncoding.ASCII.GetString(hashed_kay3))
159
Dim shaM4 As SHA512Managed = New SHA512Managed
Dim my_kay4 As Byte() = ASCIIEncoding.ASCII.GetBytes("convert this text to
hash code")
Dim hashed_kay4 As Byte() = shaM4.ComputeHash(my_kay4)
Msgbox(ASCIIEncoding.ASCII.GetString(hashed_kay4))
الgﺡت وهoS اB* اع1( أuou اوتgh Permission Namespace ال3KPو
... Role- based permissions والIdentity Permissions والSocket permissions
I/H +&K Socket ل$ loopback 127.0.0.1 Addressل الSP اI:* لt/ا ا7 هgh ;+
.ﺱ"!م/ اSocket ع ال1 BK +^: ا$ وPorts ال
[SocketPermission(SecurityAction.Deny, Access="Connect",
Host="127.0.0.1",Port="All", Transport="All")]
:g-; /;ه وآ+ g"( ا-/.ع ا1 ;ﺡP B* SecurityAction object ال::%/;
( *ﺡدة-/K اء+H إB* B.* Client Host ح/ اﺱg:.P و:Assert
( ال,O:* gh I,P g" اClasses الI/H <-K ﺡتoS&¨ اOP g:.P و:Demand
Defined Abstract < ال-K أStack
.(:.* (-/K اء+H إB* Client Host الI:* g:.P و:Deny
ث ال+# ي7 اClass < ال-K ﺡتoS&¨ اOP ih و: InheritanceDemand
.g اﺡClass
.ﺡد/ اClient User ا الK Access الI/H I:/; ﻩh و:PermitOnly
...
160
: / هB;رj 7jGPح و/ أو اﺱI:/( ا-/K ع1 ﺡدAccess property الghو
و الIP Address الI* Binding D/K B* Client Socket ح ل/ أو اﺱI:/ Accept
.ﺡد/ اPort
Remote Host الI* connect D/K B* Client Socket ح ل/ أو اﺱI:/ Connect
.ﺡد/ا
39 و رPermission ﻩ ال-K ¨&O# ي7 اHost ان ال1:K ﺡدPort والHost الgh
<-K (e all (/- آ+;+/P IO" ﺱPort property الgh ) i$ DS"; g" اPort ال
( Ports الI/H <-K (ﺡoS&¨ اOP
ﺱ"!م/ اSocket ع ال1 ih ف+.:# g" واTransport property ا ﺡد ال+jوأ
:(" ا!رات ا7jGPو
Socket الI/H <-K Permession ال7&¨ هOP إذSocket ع ال1 ;ﺡP ون$ All
.Types
لt/ وآDatagram Protocols ﺱ"!مP Socket إذا آ الConnectionless
.UDP ل1آ1Pو+$
لt/ وآOriented Protocols ﺱ"!مP Socket إذا آ الConnectionOriented
.TCP ل1آ1Pو+$
.ة+V&* ;ﺡP IO"ﺱP إذTCP
.ة+V&* ;ﺡP IO"ﺱP إذUDP
161
The End of ebook
وﻥ0ی ا اIﻥ
ت وا
ا0ﺱ
ف ' ا ا
; دد أ(ا، ا'یة ا
ا
ر
...I)!J
162