日期:2013-02-17  浏览次数:20459 次

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)