Giriş
Bu sınıfı kullanmak için şu satırı dahil ederiz.
Genellikle bir TcpClient nesnesi tarafından yaratılır.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Bu sınıfı kullanmak için şu satırı dahil ederiz.
using System.Net.Sockets.NetworkStream;
Sunucuya bağlanıp ardından bir işlem yapıp bağlantıyı kapatacaksak şöyle yaparız.using (TcpClient client = ...)
{
using (NetworkStream stream = client.GetStream())
{
try
{
...
}
catch (SocketException e)
{
...
}
}
}
ConstructorGenellikle bir TcpClient nesnesi tarafından yaratılır.
TcpClient client = ...;
NetworkStream stream = client.GetStream();
Constructor - SocketŞöyle yaparız.
Socket soc = listener.AcceptSocket();
Stream stream = new NetworkStream (soc);
DataAvailable AlanıŞöyle yaparız.
if (stream.DataAvailable) {...}
Read metoduŞöyle yaparız.
byte[] bytesToRead = new byte [tcpClient.ReceiveBufferSize];
int bytesRead = stream.Read (bytesToRead, 0, client.ReceiveBufferSize);
ReadAsync metoduÖrnek
Şöyle yaparız.
async Task<string> RecieveMessage(NetworkStream stream)
{
byte[] buffer = new byte[256];
string message = null;
int x = await stream.ReadAsync(buffer, 0, buffer.Length);
message += Encoding.ASCII.GetString(buffer);
return message;
}
ÖrnekŞöyle yaparız.
while (true)
{
// Incoming message may be larger than the buffer size.
do
{
byte[] myReadBuffer = new byte[10240 * 5];
await stream.ReadAsync(myReadBuffer, 0, myReadBuffer.Length).
ContinueWith((numberOfBytesRead) =>
{
string str = Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead.Result);
...
});
}
while (stream.DataAvailable);
Write metoduŞöyle yaparız.
NetworkStream nwStream = tcpClient.GetStream();
byte[] bytesToSend = ...;
stream.Write(bytesToSend, 0, bytesToSend.Length);
WriteAsync metodu
Şöyle yaparız.
Aşağıda string, byte[] gibi nesneleri daha kolay gönderme alma için kullanılabilecek yardımcı metodlar var.
NetworkStream ve String
String yazmak için şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
async Task<int> SendMessage(NetworkStream stream, string message)
{
byte[] bytes = Encoding.ASCII.GetBytes(message + "\r\n");
await stream.WriteAsync(bytes, 0, bytes.Length);
return 1;
}
DiğerAşağıda string, byte[] gibi nesneleri daha kolay gönderme alma için kullanılabilecek yardımcı metodlar var.
NetworkStream ve String
String yazmak için şöyle yaparız.
public class StreamUtil
{
public static void SendString (NetworkStream stream, string str) {
byte[] data = Encoding.ASCII.GetBytes (str);
stream.Write (BitConverter.GetBytes (data.Length), 0, 4);
stream.Write (data, 0, data.Length);
}
public static string ReceiveString (NetworkStream stream) {
int bytesToRead = BitConverter.ToInt32(ReadBytes (stream, 4), 0);
byte[] data = ReadBytes (stream, byteCountToRead);
return Encoding.ASCII.GetString (receivePacket);
}
}
ReadBytes metodu şöyledir.public class StreamUtil
{
public static byte[] ReadBytes (NetworkStream pStream, int byteCount) {
byte[] bytes = new byte[byteCount];
int bytesRead = 0;
int totalBytesRead = 0;
try {
while (
totalBytesRead != byteCount &&
(bytesRead = stream.Read (bytes, totalBytesRead,
byteCount - totalBytesRead)) > 0
){
totalBytesRead += bytesRead;
}
} catch (Exception e) {
...
}
return (totalBytesRead == byteCount) ? bytes : null;
}
}
NetworkStream ve WriterŞöyle yaparız.
NetworkStream stream = ...;
StreamWriter streamWriter = new StreamWriter (stream);
streamWriter.WriteLine("...");
Hiç yorum yok:
Yorum Gönder