速求MFC Socket编程高手,有问题想请教,拜托拜托~~要有回应啊
要有耐心的,因为我真的是个小菜鸟~~(尴尬/),最好能留下联系方式的,,感激不尽现在我这边有一份在MFC一个对话框页面完成的基于CSocket类编写的TCP连接方式下的s...
要有耐心的,因为我真的是个小菜鸟~~(尴尬/),最好能留下联系方式的,,感激不尽现在我这边有一份在MFC一个对话框页面完成的基于CSocket类编写的TCP连接方式下的server,client数据通信。现在老师让我把UDP功能添加上。我的操作: 1,我新添了IP控件,通过获取这个“目的IP”来进行数据发送, 2,又新建了一个CSocket的派生类CUdpsocket,重载了OnReceive()函数(当消息来的时候,触发ReceiveFrom()函数来接受数据)。3,添加一个Button来启动UDP功能,在Button里 调用Create(),(当然将协议类型换成 SOCK_DGRAM)4.添加Button 来发送数据 调用 SendTo();现在问题: 1,数据发不出去,接受不了。 2在调用.ReceiveFrom()函数的时候,不知道怎么获取 IDC_IPADDRESS1的地址;后来试过好几次,我在想,是不是我一开始的想法就不对。。。有点动摇了。。
展开
2个回答
展开全部
你是不是开了两个程序在设置,然后两个程序用了同一个端口了?……
TCP协议下,服务器的时候要指定端口,客户端的时候可以不要指定端口
但是UDP协议下,没有服务器和客户端之分,两边是对等的,1、如果监听在同一个端口上,那么就没办法通信了;2、如果你概念中的“客户端”给“服务器”发信息之后,服务器端用的不是RecvFrom,界面上又不能让用户指定对方的IP和端口,那么就没办法原路发回去,客户端就收不到。
TCP协议下,服务器的时候要指定端口,客户端的时候可以不要指定端口
但是UDP协议下,没有服务器和客户端之分,两边是对等的,1、如果监听在同一个端口上,那么就没办法通信了;2、如果你概念中的“客户端”给“服务器”发信息之后,服务器端用的不是RecvFrom,界面上又不能让用户指定对方的IP和端口,那么就没办法原路发回去,客户端就收不到。
更多追问追答
追问
确实,TCP和UDP两种连接方式用的都是同一个端口。。。另外求大神帮忙看看我下面报错的那个问题,怎么才能将地址获取调用成功,,能说的更具体点吗,,我是初学的小菜鸟,就包括这个想法也是我偶然翻看资料总结的。。
追答
TCP的客户端你在创建socket的时候没有bind一个本地端口吧?(因为其实不需要bind,如果bind了,估计也就出错了)。
所以你在使用UDP的时候,如果是同一台电脑上测试,两边要用不同的端口。或者这么讲吧,你需要在界面上弄两个给你输入端口的地方,一个是自己的端口一个是对方的端口,这样在sendto的时候才知道要sendto到哪里(如果你之前调用了connect,那么可以直接用send。不过udp这个情况下你两边都需要connect,而不是只客户端对服务器connect)
下面那个?那个控件的类它本来就有一个GetAddress的方法,你定义四个unsigned char类型的变量送到那个函数里面去调用,就拿到了那个控件上用户输入的四个数字啦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询