一个ArrayList,有需要发送的信息就往ArrayList里增加,发送成功后就删除。

解决方案 »

  1.   

    ArrayList.count
    得到当前信息的总数,然后循环发送信息出去
    收信息的时候你做监听,当然是对方有信息发送过来就接收回来,
    MSDN上有例子,我这里就不写了。
      

  2.   


    我是想知道socket以什么样的机制来实现发送与接收的循环!即怎样实现BeginAccept和BeginReceive之间的循环。
      

  3.   


    写错了,是BeginSend和BeginReceive之间的循环。
      

  4.   

    不用Beginxxx,简单的很,另外启动一个监听线程就可以了void work_thread()
    {   System.Net.Sockets.NetStream _ns  = new NetStream(your_socket, false);
       for(;;;)
      {
         while ( !_ns.IsDataAli.... );
         _ns.Read(...)
       }
    }这个是简单的,我自己写过完整的。实现你的要求没问题。
      

  5.   


    我需要的是异步的socket通讯。
      

  6.   

    唉……
    给我吧,呵呵
    我也有问题啊,异步的时候,在beginreceive里调用异步readcallback函数
    而readcallback函数里面再次调用beginreceive
    当发送一个包时,只有第一次调用啊
    后面本应该还有次读出数据为0的调用呀!怎么都不出来!
    烦躁
      

  7.   

    send()
    {
    socket.beginsend( SendCallback);
    }SendCallback()
    {
    如果想接收数据
    socket.beginReceive(ReceiveCallback)
    如果不幸接收数据就算了
    }ReceiveCallback()
    {
    如果想接收数据
    socket.beginReceive(ReceiveCallback)
    如果想发送数据
    socket.beginsend( SendCallback);
    如果什么都不想就算了
    }
      

  8.   


    我的程序的流程是:使用BeginReceive接收4个字节,此4字节记录了正确包的长度,然后使用BeginReceive接收其余的字节,经过处理后再使用BeginSend发送内容包出去,在EndSend后再开始BeginReceive,在这过程中可能会出现BeginReceive接收不到字节及接收完后不需要发送包出去的情况。BeginReceive->EndReceive->BeginReceive->EndReceive->BeginSend->EndSend->BeginReceive但是在这过程中经常在EndSend后开始BeginReceive时会抛出"您的主机中的软件放弃了一个已建立的连接。"的异常,请问哪位大大能够提供解决方案?
      

  9.   

    您的主机中的软件放弃了一个已建立的连接。"的异常,请问哪位大大能够提供解决方案?这个好像是因为你已经关闭了你的socket导致的
      

  10.   


    我也知道是socket被关闭了,但是不是我强制关闭的,是程序自己关闭的,百思不得其解。如果在没有字节可以接收的情况下调用socket.BeginReceive是否会导致这种情况出现?
      

  11.   


    我也知道是socket被关闭了,但是不是我强制关闭的,是程序自己关闭的,百思不得其解。如果在没有字节可以接收的情况下调用socket.BeginReceive是否会导致这种情况出现?