UDP编程的问题!
各位大虾小弟是网络编程的新手,有个问题问大家:在用SOCKET进行UDP编程的时候应该是指定一个端口来进行数据的接收对吧,数据的发送一般用sendto函数发送出去就行了,可是现在的软件一般接收和发送都是指定不同的端口来进行工作的,我的问题就是,既然已经绑定了一个端口给接收那么如何绑定另外一个指定的端口给发送呢?我找了很多资料都没解决这个问题,望高手指点,我知道MSDN里面有答案,可是我E文不太行,实在找不到在哪里,如果有高手知道的话请指点指点小弟! 问题点数:20、回复次数:15Top
1 楼bug2k(bug2k)回复于 2005-02-02 09:05:36 得分 5
再绑定了一个端口专司发送。Top
2 楼Sander()回复于 2005-02-02 09:30:43 得分 5
为什么要再用另一个port来发送,接收port就可以用来发送呀。Top
3 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2005-02-02 09:35:11 得分 5
bind和接收发送没关系!只要你创建了socket都可以bindTop
4 楼zj510(周)回复于 2005-02-02 09:48:54 得分 5
最简单的就是创建两个socket了
一个负责发送,
一个负责接收。
这样很清楚的。Top
5 楼ant0702(蚂蚁)回复于 2005-02-02 10:25:44 得分 0
为什么要用两个不同的端口呢Top
6 楼xhmff9(爱得累哟)回复于 2005-02-02 10:32:34 得分 0
to bug2k(bug2k):
我试过再绑定,可是会出错。
to Sander(),zj510(周):
很多软件都采用接收发送分离的办法,这样可以降低出错的可能性,效率也提高!
to sharkhuang(~爱一个人好难~):
是创建了socket都可以bind,但如果你bind两次就会出错呀!Top
7 楼bug2k(bug2k)回复于 2005-02-02 11:07:57 得分 0
你是不是用了一个句柄Creat的?Top
8 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2005-02-02 11:09:31 得分 0
对于发送方来说 不用明确绑定一个端口也可以发送 这时低层会为你绑定的Top
9 楼gdy119(夜风微凉)回复于 2005-02-02 13:22:15 得分 0
udp:
server ----------------------------------clinet
socket() ---------- ----- ------------ socket()
bind() ----------------------- --------- bind()
recvfrom()------------------ ----------- sendto()
sendto()----------------------------- ---recvfrom()Top
10 楼Sander()回复于 2005-02-02 13:47:27 得分 0
TO:xhmff9(爱得累哟)
很多软件都采用接收发送分离的办法,这样可以降低出错的可能性,效率也提高!
-----------------------
能讲讲这个的原理吗Top
11 楼xhmff9(爱得累哟)回复于 2005-02-02 14:16:37 得分 0
to bug2k(bug2k):
我的socket是用WSASocket建立的呀。
to fengge8ylf(第一次真正想有个女朋友) :
我知道对于发送方来说可以不用明确指定发送端口,但是我的问题就是我想指定发送端口。
to Sander():
我们都知道很多软件都是指定发送端口和接收端口的呀,我老师就是叫我搞清楚如果将发送和接收这两件事情分开来做,但是我找了很久都找不找资料。Top
12 楼tangrh(阿唐)回复于 2005-02-02 16:31:35 得分 0
对客户端来讲,不绑照样可以发送(当你后续调用sendto时会自动替你绑定),而且对客户端绑定固定端口则很可能会失败,一般编程都不要绑定,服务端绑定的目的是为了让自己的连接信息公开化。发送和接收都是一个socketTop
13 楼Sander()回复于 2005-02-02 18:23:27 得分 0
我们都知道很多软件都是指定发送端口和接收端口的呀,我老师就是叫我搞清楚如果将发送和接收这两件事情分开来做,但是我找了很久都找不找资料。
-------------------------------------------------
分开来做,并不需要两个端口,而是要用两个event,或thread,
制定发送端口,和接收端口,是针对server/client端,两个分别说的Top
14 楼_xiao(小小)回复于 2005-02-03 00:42:29 得分 0
同意 zj510(周) ,创建两个socket,收的那个自然要bind()了,发的那个也bind()一次,发的时候就会使用所绑定的端口了
Top
15 楼liuzq_78(披着羊皮的狼)回复于 2005-02-03 08:58:09 得分 0
gzTop




