UDP如何传输 文本文件 ? c# 用UDP 如何传输 文本文件 ?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先创建udp socket,然后从文件中读取文本内容保存到byte[]中,发送需要发送接收方有一定协议,主要是文件发送开始与结束都有相应标志即可 这个我知道,我是想能不能用UDP传输 整个文本文件(而不是提取文本内容)... udp不太好,好是tcp好点不过udp也是可以实现的把文件分包,发送端发送之前先发送给信息包,包含包大小,分割数量等接受端响应后发送端开启线程发包,接收端开启线程接收最后收到结束标志后接收端再封包这是我自己想的不过没实际做过,只供参考对于三楼的问题用二楼的方法也是可以实现的请大家多指点,集思广益吧,呵呵 无论是啥文件 全部吧byte取出来 发送过去就行了 然后在那边拼装起来····拼装的时候必须要以byte拼··也就是2进制···不然要出错·····给一个我写来玩的吧。。写的差 见笑了 //发送: socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(ServerIP, 44444); byte[] buffer = System.IO.File.ReadAllBytes(@"D:\Test.txt"); // Encoding.Unicode.GetBytes ("FuckFuck"); socket.Send(buffer); //接收 public Socket socket; const int BUFFERSIZE = 1024; byte[] buffer = new byte[BUFFERSIZE]; public Thread receiveThread; string _name; string _number; int index = 0; byte[] package; public Client(Socket s) { socket = s; receiveThread = new Thread(new ThreadStart(Recevie)); receiveThread.Start(); } void Recevie() { string tmp = ""; while (true) { try { tmp = ""; EndPoint ep = socket.RemoteEndPoint; int len=0; int totalRecive = 0; do { len = socket.ReceiveFrom(buffer, ref ep); tmp += Encoding.ASCII.GetString(buffer, 0, len); totalRecive += len; } while (len == BUFFERSIZE); Com.WriteLine("[GetMessage] Length=" + totalRecive.ToString() + " From " + ep.ToString()+"\n"+tmp); } catch { receiveThread.Abort(); } } } 如果是图片文件啥的 len = socket.ReceiveFrom(buffer, ref ep); tmp += Encoding.ASCII.GetString(buffer, 0, len); totalRecive += len;这里改成加到一个byte[] box里面就行了然后System.IO.File.WriteAllBytes("xxx\xxx",box)就行了 看来用UDP直接传输文本文件 比较麻烦了好像ftp可以直接传文件,不知道那个简便、安全一些 ? 客户端是wince, wince下不支持流,有没有更好的 直接输整个 文本文件 的方法? 我觉得最好的方法是用FTP协议,可以把这个协议嵌进程序当中 C# Panel AutoScroll 子控件显示问题 关于ERP系统 C# EXCEL导入SQL的问题. win7的mouse_event 搭键三楼楼长OA遇到了奇怪问题 ###############################如何将指定进程设置为当前的焦点进程? 请问网上哪有下载vs 。net的? (请版主帮我置顶)高手请进.问题可能有点难,分不够再加.关于拖放操作的. axWebBrowser 不能浏览图片链接, - 高分寻解决方法 如何在dataGrid中正确显示数据库里的时间值? 隐藏托盘图标的问题!!希望得到大家的帮助谢谢 封装问题~`~,急~
需要发送接收方有一定协议,主要是文件发送开始与结束都有相应标志即可
这个我知道,我是想能不能用UDP传输 整个文本文件(而不是提取文本内容)...
不过udp也是可以实现的
把文件分包,发送端发送之前先发送给信息包,包含包大小,分割数量等
接受端响应后发送端开启线程发包,接收端开启线程接收
最后收到结束标志后接收端再封包
这是我自己想的不过没实际做过,只供参考对于三楼的问题用二楼的方法也是可以实现的请大家多指点,集思广益吧,呵呵
拼装的时候必须要以byte拼··也就是2进制···不然要出错·····
给一个我写来玩的吧。。写的差 见笑了 //发送:
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ServerIP, 44444);
byte[] buffer = System.IO.File.ReadAllBytes(@"D:\Test.txt"); // Encoding.Unicode.GetBytes ("FuckFuck");
socket.Send(buffer);
//接收
public Socket socket;
const int BUFFERSIZE = 1024;
byte[] buffer = new byte[BUFFERSIZE];
public Thread receiveThread;
string _name;
string _number;
int index = 0;
byte[] package;
public Client(Socket s)
{
socket = s;
receiveThread = new Thread(new ThreadStart(Recevie));
receiveThread.Start();
} void Recevie()
{
string tmp = "";
while (true)
{
try
{
tmp = "";
EndPoint ep = socket.RemoteEndPoint;
int len=0;
int totalRecive = 0;
do
{
len = socket.ReceiveFrom(buffer, ref ep);
tmp += Encoding.ASCII.GetString(buffer, 0, len);
totalRecive += len; } while (len == BUFFERSIZE);
Com.WriteLine("[GetMessage] Length=" + totalRecive.ToString() + " From " + ep.ToString()+"\n"+tmp);
}
catch
{
receiveThread.Abort(); }
}
}
len = socket.ReceiveFrom(buffer, ref ep);
tmp += Encoding.ASCII.GetString(buffer, 0, len);
totalRecive += len;这里改成加到一个byte[] box里面就行了
然后
System.IO.File.WriteAllBytes("xxx\xxx",box)就行了
好像ftp可以直接传文件,不知道那个简便、安全一些 ?
有没有更好的 直接输整个 文本文件 的方法?