baidu_28235477 2015-09-16 07:23 采纳率: 0%
浏览 1796

socket通信accept语句执行太长(几百毫秒),会丢失数据怎么解决?

WSADATA data; //定义WSADATA结构体对象
WORD w = MAKEWORD(2, 0); //定义版本号码
::WSAStartup(w, &data); //初始化套接字库
SOCKET s, s1;
//定义连接套接字和数据收发套接字句柄

s = ::socket(AF_INET, SOCK_STREAM, 0);      //创建TCP套接字
sockaddr_in addr, addr2;                    //定义套接字地址结构
addr.sin_family = AF_INET;              //初始化地址结构
addr.sin_port = htons(6000);
addr.sin_addr.S_un.S_addr = INADDR_ANY;
int n = sizeof(addr2);

/*connect(s, (sockaddr*)&addr, sizeof(addr));*/

int tt = clock();
bind(s, (sockaddr*)&addr, sizeof(addr));
listen(s, 2);
//s1 = accept(s, (sockaddr*)&addr2, &n);


while (true)
{
    int t1 = clock();
    s1 = accept(s, (sockaddr*)&addr2, &n);//该语句时间很长
    int tt = clock();
    int time = tt - t1;
    char sztext[1000] = { 0 };


    recv(s1, sztext, sizeof(sztext), 0);

if (s1 == INVALID_SOCKET)
{
    AfxMessageBox(_T("通信故障"));
    break;
}
}
  • 写回答

1条回答 默认 最新

  • oyljerry 2015-09-16 09:17
    关注

    这个accept取决于你的客户端请求,有客户端请求了,才会accept,不然就阻塞在那

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献