• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-6-30 23:38 | 作者: admin | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网 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;

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网