有关winsock发送数据的问题,up也有分啊!

aaronzhang 2002-07-13 10:19:40
各位大虾:
小弟近日要做一程序,用VC做一个转发器,专门从一个端口(例如5500)接收别人发来的UDP消息,然后再从另一个端口(例如800)发送给其他的机器,不知道如何实现这个功能。监听是需要一直存在的,我想应该新建一个线程,但是在这个线程里如何同时接收并且发送这些UDP消息呢?


多谢!
...全文
7 点赞 收藏 37
写回复
37 条回复
zhaoyao73 2002年07月20日
自己的IP地址不可以绑定多次?怎么建立多个socket?
最好把第二个socket,定为全局的,最后一直关闭。
回复 点赞
CppCore 2002年07月17日
up too.
回复 点赞
apollo_jiang 2002年07月16日
信以发出,请查收
回复 点赞
anglely168 2002年07月16日
to apollo_jiang(弱旅) :
can you send me too?
my e_mail:fans86@163.net
回复 点赞
chenkan2000 2002年07月16日
简单问题简单做法。
回复 点赞
aaronzhang 2002年07月16日
希望大家再给点意见!
回复 点赞
leeseon 2002年07月16日
反正没事了,up吧
回复 点赞
aaronzhang 2002年07月16日
TO:verybigbug()
可是我上面的代码中如果将调用setsockopt函数的语句去掉,就没有任何问题,这是为何?
回复 点赞
leus 2002年07月16日
up
回复 点赞
verybigbug 2002年07月16日
UDP根本不用accept和listen.不要和TCP混淆了。
sendto出错可能是因为你sendto的目标server建立了吗?
如果udp server没有建立你当然send不出去。
我觉得应该很简单的。
用不作多线程。又不是tcp。
直接recvform, sendto就可以了,关键是在sendto之前sendto的目标server必须
先建立起来。
回复 点赞
xiaohyy 2002年07月16日
哈哈,我也up!
回复 点赞
aaronzhang 2002年07月15日
to:icelight(icelight)

呵呵,我明白你的意思,但是我不清楚的是怎样让一个IP地址被绑定两次,并且还能正常工作。setsockopt我也用过,可是好像没什么用。

大家能不能给点这样使用setsockopt的具体代码呢?
回复 点赞
icelight 2002年07月15日
在VC6(未打pack2补丁时),CSocket在多线程中会若用static MFC就会出问题。

建议只用SOCKET API。

对于楼主的问题,主线程A只管ACCEPT,收到链接就启动新线程B,将UDP内容放在线程B的参数(void *p)中传过去就是了。不用想得过于复杂。

回复 点赞
aaronzhang 2002年07月15日
TO:dongcan()

你是高手?那也没有这样侮辱别人的吧?你以为你这样就不是白痴了?呵呵。真是幼稚。你也只有两个小三角嘛!很牛?哈哈!笨蛋!
回复 点赞
dongcan 2002年07月15日
白痴级的问题。
回复 点赞
aaronzhang 2002年07月15日
To:zjapuap73

一个IP地址可以在一个程序里绑定多次嘛?你试试上面的那段代码,在创建那个800端口的socket时会出错!
回复 点赞
johnic 2002年07月15日
up
回复 点赞
dou_ya 2002年07月15日
xghome(东楼) 的方法很好,效率很高,但是实现比较复杂。

如果对效率要求不是太高的话,可以每监听到一个数据就将他发送出去。
使用主线程就可以了,不需要创建单独的线程。
回复 点赞
wuxuan 2002年07月15日
建立一个消息池,使其可以并发处理各客户端的UDP包。
另外,发送与接收应该使用两个SOCKET进行处理。
回复 点赞
aaronzhang 2002年07月15日
多谢。我的信箱:aaron.zh@263.net
回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7901

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告