搜索
bottom↓
回复: 4

UDP传输问题请教

[复制链接]

出0入0汤圆

发表于 2011-6-13 15:43:23 | 显示全部楼层 |阅读模式
最近在玩UDP时发现一个现像:

我想在同一个线程里创建两个udp 的socket,让他们能使用不同端口,接收不同的消息;但是创建第一个socket成功,第二个就不功能。不能同时创建两个socket,就算把他无放到两个不同的线程也是一样。。不知道是怎么回事,向各位请教

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2011-6-13 15:50:32 | 显示全部楼层
补充一下。用的是用BSD SOCKET,不是lwip,rt-thread 0.3.0

出0入4汤圆

发表于 2011-6-13 15:53:24 | 显示全部楼层
严重怀疑为2个相同的端口号. 或者看看出错时的GetLastError()返回值是什么.

出0入0汤圆

 楼主| 发表于 2011-6-13 16:18:10 | 显示全部楼层
我现在是还没到绑定端口这一部,
    if((socka = socket(AF_INET, SOCK_DGRAM, 0)) == 0)//创建成功
        rt_kprintf("Creating UDP connected is OK!!!\n");
    else{
        rt_kprintf("UDP Socket a error!!\n");
        return -1;
    }
        //有问题,为什么不可以建两个socket
        if((sockb = socket(AF_INET, SOCK_DGRAM, 0)) == 0)//创建成功
        rt_kprintf("Creating UDP bc connected is OK!!!\n");
    else{
        rt_kprintf("UDP Socket b error!!\n");
        return -1;
    }

程序在sockb就退出了。。。相当无语,是否要在相关的设置文件做改动??在网上都找不到相应的解决方法

出0入0汤圆

 楼主| 发表于 2011-6-13 16:55:31 | 显示全部楼层
找到问题啦。。
是我程序的问题

如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里

我的程序返回值判断错了。。按照上面的意思 如果正常建立的话 应该是返当前的第几个socket,不知道我的理解是否正确。

而且。rt-thread限制了 好像只能建10 个socket.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-4 13:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表