C# Language
नेटवर्किंग
खोज…
वाक्य - विन्यास
- TcpClient (स्ट्रिंग होस्ट, इंट पोर्ट);
टिप्पणियों
आप client.GetStream()
साथ एक TcpClient
से NetworkStream
प्राप्त कर सकते हैं और अपने async पढ़ने और लिखने के तरीकों तक पहुँच प्राप्त करने के लिए इसे एक StreamReader/StreamWriter
में पास कर सकते हैं।
बेसिक टीसीपी कम्युनिकेशन क्लाइंट
यह कोड उदाहरण एक टीसीपी क्लाइंट बनाता है, सॉकेट कनेक्शन पर "हैलो वर्ल्ड" भेजता है, और फिर कनेक्शन बंद करने से पहले कंसोल के लिए सर्वर प्रतिक्रिया लिखता है।
// Declare Variables
string host = "stackoverflow.com";
int port = 9999;
int timeout = 5000;
// Create TCP client and connect
using (var _client = new TcpClient(host, port))
using (var _netStream = _client.GetStream())
{
_netStream.ReadTimeout = timeout;
// Write a message over the socket
string message = "Hello World!";
byte[] dataToSend = System.Text.Encoding.ASCII.GetBytes(message);
_netStream.Write(dataToSend, 0, dataToSend.Length);
// Read server response
byte[] recvData = new byte[256];
int bytes = _netStream.Read(recvData, 0, recvData.Length);
message = System.Text.Encoding.ASCII.GetString(recvData, 0, bytes);
Console.WriteLine(string.Format("Server: {0}", message));
};// The client and stream will close as control exits the using block (Equivilent but safer than calling Close();
वेब सर्वर से फाइल डाउनलोड करें
इंटरनेट से एक फ़ाइल डाउनलोड करना एक बहुत ही सामान्य कार्य है जिसे लगभग हर एप्लिकेशन को आपके द्वारा बनाए जाने की आवश्यकता होती है।
इसे पूरा करने के लिए, आप " System.Net.WebClient " वर्ग का उपयोग कर सकते हैं।
इसका सबसे सरल उपयोग, "उपयोग" पैटर्न का उपयोग करके नीचे दिखाया गया है:
using (var webClient = new WebClient())
{
webClient.DownloadFile("http://www.server.com/file.txt", "C:\\file.txt");
}
यह उदाहरण क्या करता है, इसका उपयोग "उपयोग" करने के लिए किया जाता है, यह सुनिश्चित करने के लिए कि आपके वेब क्लाइंट को समाप्त होने पर सही तरीके से साफ किया जाता है, और बस पहले पैरामीटर में URL से नामित संसाधन को दूसरे में अपने स्थानीय हार्ड ड्राइव पर नामित फ़ाइल में स्थानांतरित किया जाता है। पैरामीटर।
पहला पैरामीटर " System.Uri " प्रकार का है, दूसरा पैरामीटर " System.String " प्रकार का है
आप इस फ़ंक्शन का उपयोग कर सकते हैं यह एक async फ़ॉर्म है, जिससे यह बंद हो जाता है और पृष्ठभूमि में डाउनलोड करता है, जबकि आपके एप्लिकेशन को किसी और चीज़ के साथ मिलता है, इस तरह से कॉल का उपयोग करना आधुनिक अनुप्रयोगों में प्रमुख महत्व का है, क्योंकि यह मदद करता है अपने उपयोगकर्ता इंटरफ़ेस को उत्तरदायी बनाए रखने के लिए।
जब आप Async विधियों का उपयोग करते हैं, तो आप ईवेंट हैंडलर को हुक कर सकते हैं जो आपको प्रगति की निगरानी करने की अनुमति देते हैं, ताकि आप उदाहरण के लिए, प्रगति बार को अपडेट कर सकें, जैसे कुछ निम्नलिखित:
var webClient = new WebClient())
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
webClient.DownloadFileAsync("http://www.server.com/file.txt", "C:\\file.txt");
एक महत्वपूर्ण बात यह है कि यदि आप एस्किंक संस्करणों का उपयोग करते हैं, तो याद रखें और "सिंटैक्स" का उपयोग करते हुए उनका उपयोग करने में बहुत सावधानी बरतें।
इसका कारण काफी सरल है। एक बार जब आप डाउनलोड फ़ाइल विधि को कॉल करते हैं, तो यह तुरंत वापस आ जाएगी। यदि आपके पास उपयोग करने वाले ब्लॉक में यह है, तो आप उस ब्लॉक से बाहर निकल जाएंगे, और तुरंत क्लास ऑब्जेक्ट को डिस्पोज़ कर देंगे, और इस तरह अपना डाउनलोड रद्द कर सकते हैं।
यदि आप एक Async स्थानांतरण करने के 'उपयोग' के तरीके का उपयोग करते हैं, तो हस्तांतरण पूरा होने तक संलग्नक ब्लॉक के अंदर रहना सुनिश्चित करें।
Async टीसीपी ग्राहक
C # अनुप्रयोगों में async/await
का उपयोग करना बहु-थ्रेडिंग को सरल करता है। यह है कि आप एक TcpClient के साथ संयोजन में async/await
उपयोग कैसे कर सकते हैं।
// Declare Variables
string host = "stackoverflow.com";
int port = 9999;
int timeout = 5000;
// Create TCP client and connect
// Then get the netstream and pass it
// To our StreamWriter and StreamReader
using (var client = new TcpClient())
using (var netstream = client.GetStream())
using (var writer = new StreamWriter(netstream))
using (var reader = new StreamReader(netstream))
{
// Asynchronsly attempt to connect to server
await client.ConnectAsync(host, port);
// AutoFlush the StreamWriter
// so we don't go over the buffer
writer.AutoFlush = true;
// Optionally set a timeout
netstream.ReadTimeout = timeout;
// Write a message over the TCP Connection
string message = "Hello World!";
await writer.WriteLineAsync(message);
// Read server response
string response = await reader.ReadLineAsync();
Console.WriteLine(string.Format($"Server: {response}"));
}
// The client and stream will close as control exits
// the using block (Equivilent but safer than calling Close();
बेसिक यूडीपी क्लाइंट
यह कोड उदाहरण एक UDP क्लाइंट बनाता है, फिर इच्छित प्राप्तकर्ता को नेटवर्क में "हैलो वर्ल्ड" भेजता है। एक श्रोता को सक्रिय होने की आवश्यकता नहीं है, क्योंकि यूडीपी कनेक्शन रहित है और संदेश को बिना परवाह किए प्रसारित करेगा। एक बार जब संदेश भेजा जाता है, तो क्लाइंट काम करते हैं।
byte[] data = Encoding.ASCII.GetBytes("Hello World");
string ipAddress = "192.168.1.141";
string sendPort = 55600;
try
{
using (var client = new UdpClient())
{
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(ipAddress), sendPort);
client.Connect(ep);
client.Send(data, data.Length);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
उपरोक्त क्लाइंट को पूरक करने के लिए नीचे एक यूडीपी श्रोता का एक उदाहरण है। यह लगातार किसी दिए गए पोर्ट पर ट्रैफ़िक के लिए बैठेगा और सुनेगा और बस उस डेटा को कंसोल पर लिखें। इस उदाहरण में एक नियंत्रण ध्वज ' done
' है जो आंतरिक रूप से सेट नहीं है और श्रोता को समाप्त करने और बाहर निकलने के लिए अनुमति देने के लिए किसी चीज़ पर निर्भर करता है।
bool done = false;
int listenPort = 55600;
using(UdpClinet listener = new UdpClient(listenPort))
{
IPEndPoint listenEndPoint = new IPEndPoint(IPAddress.Any, listenPort);
while(!done)
{
byte[] receivedData = listener.Receive(ref listenPort);
Console.WriteLine("Received broadcast message from client {0}", listenEndPoint.ToString());
Console.WriteLine("Decoded data is:");
Console.WriteLine(Encoding.ASCII.GetString(receivedData)); //should be "Hello World" sent from above client
}
}