Tcp应用实例---1.基础知识
来源:互联网 发布:安禄山史思明 知乎 编辑:程序博客网 时间:2024/05/29 14:22
(源码下载地址,http://download.csdn.net/source/406996)
在进行实际编码之前,有几个概念要先讲一下。
1。启动一个线程
.net中,包含线程类的命名空间是using System.Threading,通过这个空间里的类Thread可以启动一个线程,就像下面这样:
...{
private void WaitToMakeFile()
...{
//
}
public void StartAThread()
...{
Thread t = new Thread(new ThreadStart(WaitToMakeFile));
t.Start();
}
}
由代码可见,有两个地方需要注意。一是类Thread的构造函数需要传递一个ThreadStart的对象作为参数;二是这个ThreadStart类的构造函数需要传递一个无返回类型,无参数的函数的名字作为参数,这里传递的是private void WaitToMakeFile()。
最后通过Thread.Start()方法来启动线程,线程中实际执行的是函数WaitToMakeFile中的代码。在WaitToMakeFile中的代码执行完毕后,线程退出。
可能会问,需要向线程中传递参数应该怎么办呢?这需要一种新的思路:
...{
public void StartAThread()
...{
TConnectionTest conTest = new TConnectionTest("192.168.1.1", 9999);
Thread t = new Thread(new ThreadStart(conTest.ConnectionToServer));
t.Start();
}
}
private class TConnectionTest
...{
public string serverAddress;
public int port;
public TConnectionTest(string s, int p)
...{
serverAddress = s;
port = p;
}
public void ConnectionToServer()
...{
//use serverAddress and port
}
}
不错,需要定义一个新类,ThreadStart类的参数传递的是这个新类中的无参数无返回值的函数,而需要传入线程的参数则写入到这个类的实例中。
2。在线程中操作主窗口上的控件。
在线程中,并不能直接控制主窗口上的控件,因为这些控件并不是在这个线程中产生的,直接操作其他线程的控件可能会产生一些不可预期的错误。应该像下面这样调用:
public void GetFileList()
...{
//get info
dd a = delegate()
...{
_listBox.Items.Clear();
for (int i = 0; i < command.argList.Count; i++)
...{
_listBox.Items.Add((string)command.argList[i]);
}
};
_listBox.Invoke(a);
}
实际过程是先定义一个委托,然后通过控件的Invoke()方法来调用这个委托。
3。关于TcpServer、TcpClient的使用,网上的教程、文章一大堆,而这里只是一些简单应用,因此不做讲解。
ie.2008-04-09
- Tcp应用实例---1.基础知识
- JSON-基础知识及实例应用
- TCP基础知识
- VBdotnet2005 TCP IP System.Net.Sockets应用实例
- Tcp应用实例---2.从服务端获取文件列表
- Tcp应用实例---3.从服务端下载文件(断点续传)
- 基于全硬件TCP/IP的产品应用实例
- Apache Mina 应用 TCP/UDP socket编程实例
- TCP 实例
- 应用基础知识
- 应用基础知识
- 应用基础知识
- tcp/ip基础知识
- tcp/ip基础知识
- TCP/IP基础知识
- TCP/IP基础知识
- TCP/IP基础知识总结
- TCP/IP协议基础知识
- Kugoo用户积分体系
- map用法
- Vs2005之简单日志工具的制作--6.启动
- hibernate设计一棵普通的树
- SQL SERVER 不能连接的完美解决方案
- Tcp应用实例---1.基础知识
- Windows API 类别详细说明,函数的作用
- 正则表达式收集
- shell学习之合并与分割
- 电脑象棋循序渐进(二):从图形界面做起
- 常用JavaScript
- 对DataSetHelper类的一些深刻认识
- opengl非全屏绘图的简单使用总结
- Tcp应用实例---2.从服务端获取文件列表