由于网络速度太快,无法测试这个问题,所以在这里问一下 使用Socket时,客户端用Send方法往服务器发信息,如果服务器还没收到第一条信息,这时客户端又用Send向服务器发送第二条信息,这时双方会不会出错?如果会出错出什么错? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在使用UDP方式发送时,有可能第二条信息会先到达。 Tcp协议保证数据顺序、可靠的到达。 可以在udp传输上做检查,间接达到tcp传输的效果 就是udp数据的接收验证单个udp传输数据验证可以这样做在udp数据里做个标记A ----> B如果B收到返回一个udp数据表示收到如果在一定时间内A没有收到,则重新发送 不会出错不要老被所谓的阻塞 Socket (其实就是老掉牙的select 模型)所混淆,瞧瞧 Network Programming for Microsoft Windows 2nd 就知道了(用电驴搜),如果嫌太深,就建议楼主用异步多写socket 并且注意你写下的每一个参数,有不少的人学编程是抄抄抄,自己写下的字自己都不知道是什么,然后就是到处问(不是说楼主哩),其它答案都在自己所打的字里。比如注意下Socket 构造:new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );这三个参数各是什么意思,为什么这么用,就明白为什么不会出错了,特别是第二个参数 SocketType.Stream 当然上面所说的是.net 编程时程序员会在逻辑上的出错可能,因为系统对收发数据都是有缓冲区的,你发了三个过来都在缓冲里呢。(如果用完成端口模型而不用.net 的socket 就可以控制到细节,在.net 被包装了,参见 http://spaces.msn.com/members/arliweng/Blog/cns!1p0Nt-ZM4sbr2MSyXYRugcaw!108.entry ) 上文说注意瞧 Socket 构造的三个参数并不是答案,而只是一个了解的切入点其实呢在socket 发出时,都会等待应答(象阻塞),如果半天了没动静,系统会再启一条线程来负责你新发出的消息,线程的控制在.net 中是线程池不管是发还是收,如果超级多的半天没动静就是所谓的拒绝攻击 不会的,TCP有一个顺序的字段。不会混的 ArLi2003,你还有这个100分问题没帮我回答完呢,我也准备结贴了http://community.csdn.net/Expert/topic/3903/3903709.xml?temp=.2320063 看看这个简单的“WINDOWS服务“程序代码为何不执行? Windows media player 获取AVI视频总时间长度 如何用画饼图的代码 求答案 .exe 怎么在别人机子上运行!!!!!!!!!!?????????????? OleDbDataAdapter.fill()问题,急! 学C#,有什么好书介绍,特别是关于图象处理方面的 C#中关于DataReader菜鸟问题 GDI+ 怎样为透明窗体设计一个橡皮擦? 参加竞赛 项目没有获奖 郁闷 散分100 数据连接字符串到底哪里出错 求教 ****小弟初学ASP.NET的几点疑惑,还请各位大虾们帮帮忙:)****
单个udp传输数据验证可以这样做
在udp数据里做个标记
A ----> B
如果B收到返回一个udp数据表示收到
如果在一定时间内A没有收到,则重新发送
这三个参数各是什么意思,为什么这么用,就明白为什么不会出错了,特别是第二个参数 SocketType.Stream 当然上面所说的是.net 编程时程序员会在逻辑上的出错可能,因为系统对收发数据都是有缓冲区的,你发了三个过来都在缓冲里呢。(如果用完成端口模型而不用.net 的socket 就可以控制到细节,在.net 被包装了,参见 http://spaces.msn.com/members/arliweng/Blog/cns!1p0Nt-ZM4sbr2MSyXYRugcaw!108.entry )
其实呢在socket 发出时,都会等待应答(象阻塞),如果半天了没动静,系统会再启一条线程来负责你新发出的消息,线程的控制在.net 中是线程池不管是发还是收,如果超级多的半天没动静就是所谓的拒绝攻击
http://community.csdn.net/Expert/topic/3903/3903709.xml?temp=.2320063