C# 网络异步传输
来源:互联网 发布:做vr什么软件 编辑:程序博客网 时间:2024/05/01 18:51
一:声明
using System.Threading;
using System.Net.Sockets;
TcpClient clientsocket = null;
NetworkStream networkStream = null;
二:建立链接
try
{
clientsocket = new TcpClient(this.ipControl.Text, port);
if (clientsocket.Client.Connected)
{
networkStream = clientsocket.GetStream();
return true;
}
else
{
if (clientsocket != null)
{
clientsocket.Close();
clientsocket = null;
}
return false;
}
}
catch (Exception ex)
{
CloseSocket();
return false;
}
三:关闭链接
private void CloseSocket()
{
if (networkStream != null)
{
networkStream.Close();
networkStream = null;
}
if (clientsocket != null)
{
clientsocket.Close();
clientsocket = null;
}
}
四:发数据,专门建立线程发,无需异步
bWireLessSndRuning = true;
bWireLessSndRuningEnd = true;
wireLessSndThread = new Thread(new ThreadStart(SendData));
wireLessSndThread.Start();
try
{
if (networkStream.CanWrite)
{
networkStream.Write(arrayData, 0, arrayData.Length - 1);
iSuccessSendNum++;
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
bWireLessSndRuning = false;
bWireLessSndRuningEnd = true;
return;
}
五:接收数据,利用回调,不需要专门线程处理
bWireLessRcvRuning = true;
networkStream.BeginRead(recvData, 0, recvData.Length, new AsyncCallback(ReadComplete), networkStream);
private void ReadComplete(IAsyncResult ar)
{
try
{
if (bWireLessRcvRuning)
{
//退出的时候会出发,而这是链接关闭导致networkStream为空,所以退出时不再读消息
int RecvLength = networkStream.EndRead(ar);
if (RecvLength == 0)
return;
iTotalRecvNum++;
iTotalRecvLen += RecvLength;
delegateShowRecv(iTotalRecvNum.ToString() + ":" + iTotalRecvLen.ToString());
}
if (networkStream != null)
{
networkStream.BeginRead(recvData, 0, recvData.Length, new AsyncCallback(ReadComplete), networkStream);
}
}
catch (Exception ex)
{
return;
}
}
- C# 网络异步传输
- C#网络编程(异步传输字符串)
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(五、Socket异步传输字符串)
- 同步网络传输和异步网络传输
- Java 列出指定文件目录下的文件名称
- 让vdsp与uclinux共舞(8):vdsp驱动框架
- SQL日期和时间函数
- 解决Vista及Windows7系统下WM模拟器同步问题
- Javascript中最常用的55个经典技巧 收藏
- C# 网络异步传输
- November 3th Tuesday
- oracle dblink 的应用
- Java 输出反转字符串
- 瑞雪时晴,不亦快哉 ——图灵十一月月刊
- 锡恩日志:我与锡恩的“恋爱”史
- javascript函数作用域与闭包
- 架构师接龙:黄冬&邓毅
- 锡恩管理思想再受客户集中推广