免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1278 | 回复: 7
打印 上一主题 下一主题

socket通信问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-02 10:58 |只看该作者 |倒序浏览
socket通信的两端,一端发送,一端接收,发送端一直不停的发送大量的数据,接收端在一段时间后就会报告接收错误,而现场的情况要求必须进行密集的数据发送,如何才能避免接收端出现的读错误?谢谢

论坛徽章:
0
2 [报告]
发表于 2004-03-02 11:22 |只看该作者

socket通信问题

是什么样的错误?查返回码。

论坛徽章:
0
3 [报告]
发表于 2004-03-02 11:32 |只看该作者

socket通信问题

没准是接受端数据溢出了,具体的要看你的接受端的程序如何写的

论坛徽章:
0
4 [报告]
发表于 2004-03-02 14:31 |只看该作者

socket通信问题

能否贴出源码来讨论讨论

论坛徽章:
0
5 [报告]
发表于 2004-03-02 18:25 |只看该作者

socket通信问题

如果是UNIX,可以使用 Richard Stovens 先生的 Readn 试试。
ssize_t readn(int fd, void *vptr, size_t n)
{
size_t  nleft;
ssize_t nread;
char    *ptr;
ptr = vptr;
        nleft = n;
        while (nleft >; 0) {
                /*memset(ptr,0,size_t);*/
                if ( (nread = read(fd, ptr, nleft)) < 0) {
                        if (errno == EINTR)
                        {
                                nread = 0;      /* and call read() again */
                        }
                        else
                                return(-1);
                } else if (nread == 0)
                {
                        WriteLog("The SYSTEM errno is [%d]",errno);
                        break;                          /* EOF */
                }
                nleft -= nread;
               ptr += nread;
        }
        return(n - nleft);              /* return >;= 0 */
}

论坛徽章:
0
6 [报告]
发表于 2004-03-05 13:41 |只看该作者

socket通信问题

做缓冲啊

论坛徽章:
0
7 [报告]
发表于 2004-03-05 14:08 |只看该作者

socket通信问题

读错误可能是因为你的信息量过大或什么造成的,我以前也有作过,接收卫星信道过来的信息,量很大,接收端用缓冲区去接收,然后在调用别的进程去读取缓冲区,问题就解决了

论坛徽章:
0
8 [报告]
发表于 2004-03-05 14:17 |只看该作者

socket通信问题

有兴趣就跟我联系下,我的QQ:49144042
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP