关于socket异步通讯时的收发包问题 一个ArrayList,有需要发送的信息就往ArrayList里增加,发送成功后就删除。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ArrayList.count得到当前信息的总数,然后循环发送信息出去收信息的时候你做监听,当然是对方有信息发送过来就接收回来,MSDN上有例子,我这里就不写了。 我是想知道socket以什么样的机制来实现发送与接收的循环!即怎样实现BeginAccept和BeginReceive之间的循环。 写错了,是BeginSend和BeginReceive之间的循环。 不用Beginxxx,简单的很,另外启动一个监听线程就可以了void work_thread(){ System.Net.Sockets.NetStream _ns = new NetStream(your_socket, false); for(;;;) { while ( !_ns.IsDataAli.... ); _ns.Read(...) }}这个是简单的,我自己写过完整的。实现你的要求没问题。 我需要的是异步的socket通讯。 唉……给我吧,呵呵我也有问题啊,异步的时候,在beginreceive里调用异步readcallback函数而readcallback函数里面再次调用beginreceive当发送一个包时,只有第一次调用啊后面本应该还有次读出数据为0的调用呀!怎么都不出来!烦躁 send(){socket.beginsend( SendCallback);}SendCallback(){如果想接收数据socket.beginReceive(ReceiveCallback)如果不幸接收数据就算了}ReceiveCallback(){如果想接收数据socket.beginReceive(ReceiveCallback)如果想发送数据socket.beginsend( SendCallback);如果什么都不想就算了} 我的程序的流程是:使用BeginReceive接收4个字节,此4字节记录了正确包的长度,然后使用BeginReceive接收其余的字节,经过处理后再使用BeginSend发送内容包出去,在EndSend后再开始BeginReceive,在这过程中可能会出现BeginReceive接收不到字节及接收完后不需要发送包出去的情况。BeginReceive->EndReceive->BeginReceive->EndReceive->BeginSend->EndSend->BeginReceive但是在这过程中经常在EndSend后开始BeginReceive时会抛出"您的主机中的软件放弃了一个已建立的连接。"的异常,请问哪位大大能够提供解决方案? 您的主机中的软件放弃了一个已建立的连接。"的异常,请问哪位大大能够提供解决方案?这个好像是因为你已经关闭了你的socket导致的 我也知道是socket被关闭了,但是不是我强制关闭的,是程序自己关闭的,百思不得其解。如果在没有字节可以接收的情况下调用socket.BeginReceive是否会导致这种情况出现? 我也知道是socket被关闭了,但是不是我强制关闭的,是程序自己关闭的,百思不得其解。如果在没有字节可以接收的情况下调用socket.BeginReceive是否会导致这种情况出现? 前辈们会为WINDOWS PHONE 7开发应用软件吗? C# socket编程为什么打开侦听的时候,程序容易卡死,且程序收不到数据 求asp.net2.0入门经典课后题答案! DataGridView 添加一行时,为什么会在后面出来两个空行 select中的判断 关于datatable中的rowchanged事件 高手们帮帮忙啊!关于Treeview控件的问题 熟悉htc的高手请进来(在线) 请教一个小问题好吗?谢谢。 从数据库取出一个记录,分别在WORD文档的固定位置打印,求解 如何在窗体关闭时处理事件? 急呀~~~
得到当前信息的总数,然后循环发送信息出去
收信息的时候你做监听,当然是对方有信息发送过来就接收回来,
MSDN上有例子,我这里就不写了。
我是想知道socket以什么样的机制来实现发送与接收的循环!即怎样实现BeginAccept和BeginReceive之间的循环。
写错了,是BeginSend和BeginReceive之间的循环。
{ System.Net.Sockets.NetStream _ns = new NetStream(your_socket, false);
for(;;;)
{
while ( !_ns.IsDataAli.... );
_ns.Read(...)
}
}这个是简单的,我自己写过完整的。实现你的要求没问题。
我需要的是异步的socket通讯。
给我吧,呵呵
我也有问题啊,异步的时候,在beginreceive里调用异步readcallback函数
而readcallback函数里面再次调用beginreceive
当发送一个包时,只有第一次调用啊
后面本应该还有次读出数据为0的调用呀!怎么都不出来!
烦躁
{
socket.beginsend( SendCallback);
}SendCallback()
{
如果想接收数据
socket.beginReceive(ReceiveCallback)
如果不幸接收数据就算了
}ReceiveCallback()
{
如果想接收数据
socket.beginReceive(ReceiveCallback)
如果想发送数据
socket.beginsend( SendCallback);
如果什么都不想就算了
}
我的程序的流程是:使用BeginReceive接收4个字节,此4字节记录了正确包的长度,然后使用BeginReceive接收其余的字节,经过处理后再使用BeginSend发送内容包出去,在EndSend后再开始BeginReceive,在这过程中可能会出现BeginReceive接收不到字节及接收完后不需要发送包出去的情况。BeginReceive->EndReceive->BeginReceive->EndReceive->BeginSend->EndSend->BeginReceive但是在这过程中经常在EndSend后开始BeginReceive时会抛出"您的主机中的软件放弃了一个已建立的连接。"的异常,请问哪位大大能够提供解决方案?
我也知道是socket被关闭了,但是不是我强制关闭的,是程序自己关闭的,百思不得其解。如果在没有字节可以接收的情况下调用socket.BeginReceive是否会导致这种情况出现?
我也知道是socket被关闭了,但是不是我强制关闭的,是程序自己关闭的,百思不得其解。如果在没有字节可以接收的情况下调用socket.BeginReceive是否会导致这种情况出现?