Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->ASP.NET ->正文

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

来源:Linuxdby.com 作者:Webmaster 时间:2007-04-28 点击: [收藏] [投稿]
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;






 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Windows Forms中的数据绑定(一)   下一篇:DBNull使用技巧

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号