小弟以前是从事J2ee开发的,很少接触底层的东西,最近用C#开发一个C/S构架的程序,客户端和服务端需要传输一些文字做用户名密码验证,还有就是传输一些100兆左右的大文件。我是用的socket,验证的文字是转换成byte,用socket来send,服务器开线程处理每一个请求。客户端传送方式:
byte[] buffer = new byte[131072];
FileStream recZipFile = File.OpenRead("文件名");
try
{
while (r > 0)
{
r = recZipFile.Read(buffer, 0, buffer.Length);
socket.SendTo(buffer, r, SocketFlags.None, server);
}
catch (IOException ioe)
{
MainForm.alert(ioe.ToString());
}服务端也是这样接收。正常网络状态下是没有问题的。
但是我和我老板的机子一个是电信,一个是联通,网络状态不好,就经常出现文件无法传输用360监控网速,根本就没有网速。无法传送。不知道怎么回事。有没有高手能告诉我这是什么原因造成的或者解决办法。。
如果有其他的通信方式,比如框架什么的,也请告知,小弟只精通java对C#一知半解,望各位高人指点!!!跪谢!
byte[] buffer = new byte[131072];
FileStream recZipFile = File.OpenRead("文件名");
try
{
while (r > 0)
{
r = recZipFile.Read(buffer, 0, buffer.Length);
socket.SendTo(buffer, r, SocketFlags.None, server);
}
catch (IOException ioe)
{
MainForm.alert(ioe.ToString());
}服务端也是这样接收。正常网络状态下是没有问题的。
但是我和我老板的机子一个是电信,一个是联通,网络状态不好,就经常出现文件无法传输用360监控网速,根本就没有网速。无法传送。不知道怎么回事。有没有高手能告诉我这是什么原因造成的或者解决办法。。
如果有其他的通信方式,比如框架什么的,也请告知,小弟只精通java对C#一知半解,望各位高人指点!!!跪谢!
解决方案 »
- 用户代码未处理 System.NullReferenceException Message="未将对象引用设置到对象
- 【菜鸟发问】一个非常简单的向数据库中插入数据的问题!
- 听说sqlCommand+SqlParameter能有效解决sql注入问题,请问原因是什么?
- 求助:关于打开多个MDI子窗体~
- 求助,一直在线,如何改变windows窗体的标题栏颜色?????
- 谁能帮忙解决一下
- C# 外部组件发生异常
- lr21shiji 谢谢 解决问题 送分给你
- C# 中想用一个控件,可以完成网页的功能。显示的内容为客户输入的内容可能是文本、图片等
- C#巨简单问题
- 自动生成DataGridView 单元格重影
- 请高人解答接口作为成员变量、属性的返回值类型等问题
你要是用socket,要写发送端和接受端。你这个不行。你这只是发送没有接受,再说发送好像不太对呀。
QQ:2353394024我现在也在做这块,我自己写了发送和接受。加我可以讨论一下。
楼主可以去看看
socket那是必须的。
.net的socket有sendfile这一个。
msdn上看一下怎么用就可以了。
自己写send比较好一些。
楼主的方法没错。只是要多开一些。用一个发送肯定会慢。
注意订好协议。别的没啥。
catch到IOException后,光alert还不够,要尝试重新传输啊。
是自己写的即时通讯的一部分
使用了异步读取文件、TcpClient、TcpListener发送