(1)目前正在做一个项目用的是tcp/ip协议进行数据的传输;我已经实现了局域网中1台机子向另一台机子传输一份txt文件的功能;
(2)下面我需要解释的问题如下: 协议中的数据报与传输的txt文件是什么关系?
使用tcp/ip协议传输的txt文件大小有限制吗?
需要实现每20ms传一个数据文件的操作,怎么改进?
从4台客户机向服务器传输数据怎么改进?
能解决的主要先帮我解决下每20ms实时传输的问题。
(2)下面我需要解释的问题如下: 协议中的数据报与传输的txt文件是什么关系?
使用tcp/ip协议传输的txt文件大小有限制吗?
需要实现每20ms传一个数据文件的操作,怎么改进?
从4台客户机向服务器传输数据怎么改进?
能解决的主要先帮我解决下每20ms实时传输的问题。
解决方案 »
- datagridview中DataGridViewComboBoxColumn 单击后引发事件
- 《根据编码生成树》求高手帮助!!!
- 如何使用XML数据在客户端对XSL进行验证?如果有代码最好谢谢
- word对象模型如何获取选中的表格的Id
- 树的实现!
- 急.c#中如何建立一个"调色板"类 具体问题见文.
- 如何将图片写入xml中?用DOM方式操作,顶者有分
- **********用过Remotesoft .net explorer的朋友看进来*********************
- StringCollection能否读取*.DOC的文档呢
- 鼠标移到控件时,出现提示信息,用哪个属性?
- 多线程逐个销毁失败 跪求!
- .net 4.0下发邮件出现异常,求解
可以用个TIME控件
异步
使用tcp/ip协议传输的txt文件大小没限制.
需要实现每20ms传一个数据文件的操作,可以通过先把任务加入队列,然后一个线程从队列中依次传送,使用Socket.SendFile或者Socket.SendPacketsAsync来提高传输速度,这两个方法可以避免读取文件与传送时反复的进行用户态——内核态的切换。
我在接受端使用FileStream,让发送端的文件内容存储到接受端的临时文件中。
这样传输1个文件是可以的,但是,如果传输了1个文件后再传输1个文件接受端就没有响应了。有什么好的方法可以解决这个问题。
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse("2005"));
//创建一个套接字
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//绑定套接字到端口
server.Bind(ipep); //开始侦听(并堵塞该进程)
server.Listen(10); //确认连接
Socket client = server.Accept();
//获取客户端节点对象
IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint; //获得[文件名]
string SendFileName = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client)); //创建临时文件
FileStream MyFileStream = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory +"temp.txt", FileMode.Create, FileAccess.Write);
//已发送包的个数
int SendedCount = 0;
//实例化UnicodeEncoding对象用于转换。
UnicodeEncoding unicode = new UnicodeEncoding(); while (true)
{
byte[] data = TransferFiles.ReceiveVarData(client);
if (data.Length == 0)
{
break;
}
else
{
SendedCount++;
//将接收到的数据包写入到文件流对象
MyFileStream.Write(data, 0, data.Length);
//显示已发送包的个数
//MessageBox.Show("已发送包个数"+SendedCount.ToString()); }
} MyFileStream.Close();由于1个文件传输完毕了,MyFileStream关闭了,在传输下一个文件时就没法进行了。我这里的临时文件的作用是把文件中的内容导入进接受端的数据库中的。
怎么解决这个问题。