我想在同一个TCP套接字下实现发送和接收的功能,发送功能一直在运行,但是接收功能我只想在另一台电脑发送数据后才接收,也就是当另一台电脑发出数据后,recv函数才启用,其他时候都不启用recv函数,这该怎么实现啊?谢谢TCP/IP

解决方案 »

  1.   

    if (socket.Poll(0, SelectMode.SelectRead))
    {
    }
      

  2.   

    Available属性或者DataAvailable属性。你如何Receive信号位?Receive信号位置后立刻Receive数据对吧?Receive就是集成这两个功能的。所以如果你阻塞在那里去看什么“信号位”,那么还不如仅写一个Receice语句。编程当然是越简单越好,只有那些抱着java书籍走火入魔的人才喜欢繁琐地去编程。如果你不想阻塞和占用线程资源,如果你想让系统变得依赖倒置似地敏捷轻快,那么就使用 BeginReceive (或者 BeginRead),这就是系统已经写好的现成的灵敏响应“信号位”——仅在必要时才回调你的代码——的机制。
      

  3.   

    Quote: 引用 5 楼 sp1234 的回复:

    Available属性或者DataAvailable属性。你如何Receive信号位?Receive信号位置后立刻Receive数据对吧?Receive就是集成这两个功能的。所以如果你阻塞在那里去看什么“信号位”,那么还不如仅写一个Receice语句。编程当然是越简单越好,只有那些抱着java书籍走火入魔的人才喜欢繁琐地去编程。
    但是如果我只能用标准的berkeley socket API来编程的话,没有beginread这个函数啊
      

  4.   

    Available属性或者DataAvailable属性。你如何Receive信号位?Receive信号位置后立刻Receive数据对吧?Receive就是集成这两个功能的。