C#学习笔记之七(network I/O, Asynchonouse network I/O)

王朝c#·作者佚名  2006-01-09
宽屏版  字体: |||超大  

Network IO;

//Server1 programm

using System.Net.Sockets;

TcpListener tcpListener = new TcpListener(65000);

tcpListener.Start();

for(;;)

{

Socket clientSocket = tcpListener.AcceptSocket()

if (clientSocket.Connected)

{

StreamFile(clientSocket);

clientSocket.Close();

break;

}

}

void StreamFile(Socket clientSocket)

{

NetworkStream networkStream =

new NetworkStream(clientSocket);

System.IO.StreamWriter streamWriter =

new System.IO.StreamWriter(networkStream);

System.IO.StreamReader streamReader =

new System.IO.StreamReader(@"C:\a.txt");

string strStream;

do {

strStream = streamReader.ReadLine();

if(strStream != null )

{

streamWriter.WriteLine(strStream);

streamWriter.Flush();

}

} while (strStream != null);

streamReader.Close();

networkStream.Close();

streamWriter.Close();

}

//Client1 Code

using System.Net.Sockets;

TcpClient serverSocket;

try {

serverSocket = new TcpClient("localhost", 65000);

} catch() {}

NetworkStream networkStream =

severSocket.GetStream();

System.IO.StreamReader streamReader =

new System.IO.StreamReader(networkStream);

try {

string strOut;

do {

if (strOut != null)

{

streamReader.ReadLine(strOut);

if (strOut != null )

{

Console.WriteLine(strOut);

}

}

} while (strOut != null );

} catch() {}

Aysnch Network IO:

//Server2

...

TcpListener = tcpListener = new TcpListener(65000);

tcpListener.Start();

for(;;)

{

Socket socketForClient = tcpListener.AcceptSock();

if (SocketForClient.Connected)

{

ClientHandler handler =

new ClientHandler(socketForClient);

handler.StartRead();

}

}

class ClientHandler

{

private byte[] buff;

private Socket socket;

private NetworkStream networkSteam;

private AsyncCallback cbRead;

private AsyncCallback cbWrite;

public ClientHandler(Socket socketForClient)

{

socket = socketForClient;

buff = new byte[256];

networkStream =

new NetworkStream(socketForClient);

cbRead = new AsyncCallback(this.OnReadComplete);

cbWrite = new AsyncCallback(this.OnWriteComplete);

}

public void StartRead()

{

networkStream.BeginRead(

buff,

0,

buff.Length,

cbRead,

null );

}

private void OnReadComplete( IAsyncResult ar)

{

int bytesRead = networkStream.EndRead(ar);

if ( butesRead > 0)

{

string s = System.Text.Encoding.ASCII.GetString(

buff, 0 buytesRead);

Console.Write("Received {0} bytes from client: {1},

bytesRead, s);

networkStream.BeginWrite(

buff, 0, bytesRead, cbWrite, null);

}

else

{

Console.WriteLine("Read connection dropped");

networkStream.Close();

socket.Close();

networkStream = null;

socket = null;

}

} //OnReadComplete

private void OnWriteComplete(IAsyncResult ar)

{

networkStream.EndWrite(ar)

Console.WriteLine("Write complete");

networkStream.BeginRead(

buff, 0, buff.Length,

cbRead, null );

} // OnWriteComplete

}

// Client2 Code

Network NetworkStream streamToServer;

TcpClient tcpSocket =

new TcpClient("localhost", 65000);

streamToServer = tcpSocket.GetStream();

string message = "This is a string sent from the client!";

StreamWriter writer =

new StreamWriter(streamToServer);

writer.WriteLine(message)

writer.Flush();

StreamReader reader =

new StreamReader(streamToServer);

string strResponse = reader.ReadLine();

Console.WriteLine("Received: {0}", strResonse);

streamToServer.Close();

return 0;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有