各位大虾小弟是网络编程的新手,有个问题问大家:在用SOCKET进行UDP编程的时候应该是指定一个端口来进行数据的接收对吧,数据的发送一般用sendto函数发送出去就行了,可是现在的软件一般接收和发送都是指定不同的端口来进行工作的,我的问题就是,既然已经绑定了一个端口给接收那么如何绑定另外一个指定的端口给发送呢?我找了很多资料都没解决这个问题,望高手指点,我知道MSDN里面有答案,可是我E文不太行,实在找不到在哪里,如果有高手知道的话请指点指点小弟!

解决方案 »

  1.   

    为什么要再用另一个port来发送,接收port就可以用来发送呀。
      

  2.   

    bind和接收发送没关系!只要你创建了socket都可以bind
      

  3.   

    最简单的就是创建两个socket了
    一个负责发送,
    一个负责接收。
    这样很清楚的。
      

  4.   

    to  bug2k(bug2k):
    我试过再绑定,可是会出错。to Sander(),zj510(周):
    很多软件都采用接收发送分离的办法,这样可以降低出错的可能性,效率也提高!to sharkhuang(~爱一个人好难~):
    是创建了socket都可以bind,但如果你bind两次就会出错呀!
      

  5.   

    你是不是用了一个句柄Creat的?
      

  6.   

    udp:
     server ----------------------------------clinet
      socket() ---------- -----  ------------  socket()
      bind() ----------------------- --------- bind()
      recvfrom()------------------ ----------- sendto()
      sendto()----------------------------- ---recvfrom()
      

  7.   

    TO:xhmff9(爱得累哟)
    很多软件都采用接收发送分离的办法,这样可以降低出错的可能性,效率也提高!
    -----------------------
    能讲讲这个的原理吗
      

  8.   

    to bug2k(bug2k):
    我的socket是用WSASocket建立的呀。to  fengge8ylf(第一次真正想有个女朋友) :
    我知道对于发送方来说可以不用明确指定发送端口,但是我的问题就是我想指定发送端口。to Sander():
    我们都知道很多软件都是指定发送端口和接收端口的呀,我老师就是叫我搞清楚如果将发送和接收这两件事情分开来做,但是我找了很久都找不找资料。
      

  9.   

    对客户端来讲,不绑照样可以发送(当你后续调用sendto时会自动替你绑定),而且对客户端绑定固定端口则很可能会失败,一般编程都不要绑定,服务端绑定的目的是为了让自己的连接信息公开化。发送和接收都是一个socket
      

  10.   

    我们都知道很多软件都是指定发送端口和接收端口的呀,我老师就是叫我搞清楚如果将发送和接收这两件事情分开来做,但是我找了很久都找不找资料。
    -------------------------------------------------
    分开来做,并不需要两个端口,而是要用两个event,或thread,
    制定发送端口,和接收端口,是针对server/client端,两个分别说的
      

  11.   

    同意 zj510(周) ,创建两个socket,收的那个自然要bind()了,发的那个也bind()一次,发的时候就会使用所绑定的端口了