引入thread后socket接受不了报文了

问题描述

不使用线程thread可以正常接受报文,加了后就在recvfrom那里不动了,是怎么回事?using namespace std;#include <thread>#include <iostream>#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <sys/wait.h>#include <unistd.h>#include <arpa/inet.h>void netlist(){int sockSrv = socket (AF_INET, SOCK_DGRAM, 0);sockaddr_in addrSrv,addrClient; addrSrv.sin_addr.s_addr = htonl(INADDR_ANY); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(1986); bind(sockSrv, (sockaddr *)&addrSrv,sizeof(sockaddr)); socklen_t len=sizeof(sockaddr); char recvBuf[100]; recvfrom(sockSrv,recvBuf,100,0,(sockaddr*)&addrClient,&len); cout<<recvBuf<<endl; //closesocket(sockSrv);}int main(){thread t(netlist);t.join();return 0;} 问题补充:牟盖东 写道

解决方案

UDP好象也没RST, 不好意思, TCP搞多了. tcpdump可以查UDP发包的情况
解决方案二:

刚学socket和thread就上C++11,太超前了.果断pthread_create()吧.
解决方案三:

貌似很奇葩,楼主你敢把JAVA client端的socket.close(); 注释掉吗?有可能还没发出去就被关掉了.发了RST.还不行就只能上tcpdump了.
解决方案四:

楼主你敢listen一下,你敢吗?
解决方案五:

那你在线程netlist 里加上listen试试嘛. 就算可以收包,你那个程序进来了,阻塞在recvfrom也是因为没有别人发UDP包给它.
解决方案六:

看到你的UPD服务器端代码,先BIND了,后面没有listen.如果你是客户端代码,又没有先SENDTO
解决方案七:

敢问楼主用的是什么编译器,什么库?从来没看见过thread标准库头文件,难道是boost?

时间: 2024-11-02 20:08:23

引入thread后socket接受不了报文了的相关文章

new- 在js中引入movieClip后 button点击事件里的for循环失效!

问题描述 在js中引入movieClip后 button点击事件里的for循环失效! /** * Created by Administrator on 2015/5/27. */ var stage,image,btn1,btn2; var image_x = 200; var image_y = 20; var step_x; var step_y; var arr_x_r = []; var arr_x_l = []; var arr_y = []; var arry = []; wind

代码-Myeclipse引入项目后JSP文件中报错,棘手。。

问题描述 Myeclipse引入项目后JSP文件中报错,棘手.. 引入了一个项目,然后其他java文件都没问题,但是JSP文件出现如下报错信息: Syntax error on token "Invalid Character", delete this token 报错位置如下: 几乎所有的JSP类似位置都报错这个错误. 如下图: JSP头部代码大致如下: <%@ page language="java" import="java.util.*,j

nginx php升级后 socket方式502错误解决办法

nginx php升级php5.3.29后 socket方式会导致网站出现502错误打不开,原因是因为nginx无法操作/tmp/php-cgi.sock(例), 需要在php-fpm.conf里面取消权限部分的注释,改成如下即可,然后重启php进程 listen.owner = www listen.group = www listen.mode = 0666

云南红河两万多亩梯田引入小龙虾后漏水坍塌

元阳人虾大战发生在元阳梯田的"小龙虾事件"引发了国内专家学者的不同 意见.云南大学教授石鹏飞建议,保护梯田现状及成功申遗工作的确很重要,但是应该兼顾考虑当地老百姓的经济发展,政府可以考虑在保护好梯田核心区的前提下,大力发展小龙虾养殖业.北京大学教授吕植则认为,此次元阳梯田引入小龙虾是一个惨痛的教训,应借此机会对村民进行教育,也对公众宣传外来入侵物种的危害.从生态保护的角度,养殖小龙虾根本不宜提倡,从保护文化与自然遗产的角度,也不建议将梯田改作他途.准备申遗的云南红河梯田突然遇到了漏水.

C#开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨_C#教程

1.TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用.http协议在应用层运行. 02,传输层(Tanspot):传输层包括UDP和TCP,UDP几乎不对报文进行检查,而TCP提供传输保证. 03,网络层(Netwok):网络层协议由一系列协议组成,包括ICMP.IGMP.RIP.OSPF.IP(v4,v6)等. 04,链路层(Link):又称为物

c#关于socket使用死循环监听接受数据后程序卡机

问题描述 publicvoidFunctiona(objectsender,EventArgse){//定义发送数据缓存byte[]data=newbyte[1024];//定义字符串,用于控制台输出或输入{IPAddressip=IPAddress.Parse("127.0.0.1");IPEndPointipEnd=newIPEndPoint(ip,5566);//定义套接字类型Socketsocket=newSocket(AddressFamily.InterNetwork,So

后重组时代电信业必须引入有效竞争

我国电信业第三次大规模重组迄今已有一年多时间,电信市场失衡状况得到一定程度的纠正,但依然存在着深层次的结构性缺陷.如何立足于全业务运营的新起点,进一步采取有力措施,推动我国电信市场的有效竞争,已成为各方必须直面的课题. 电信改革的关键是有效竞争 "有效竞争"一词最早由克拉克(J.M.Clark)在其<有效竞争的概念>一文中提出,意指将规模经济和竞争活力有效协调,形成有利于长期均衡的竞争格局.很长一段时间以来,电信监管部门常常使用"有效竞争"一词,但多是从

C#.net同步异步SOCKET通讯和多线程总结

多线程|异步 同步套接字通信 Socket支持下的网上点对点的通信 服务端实现监听连接,客户端实现发送连接请求,建立连接后进行发送和接收数据的功能 服务器端建立一个socket,设置好本机的ip和监听的端口与socket进行绑定,开始监听连接请求,当接收到连接请求后,发送确认,同客户端建立连接,开始与客户端进行通信. 客户端建立一个socket,设置好服务器端的IP和提供服务的端口,发出连接请求,接收到服务的确认后,尽力连接,开始与服务器进行通信. 服务器端和客户端的连接及它们之间的数据传送均采

关于Socket的问题

问题描述 最近在做一个用java Socket编程实现CHAP协议的一个作业,我写的代码分为服务器端和客户端!服务器端启动后就进入监听连接状态:while(true) {try {Socket socket = chapServer.getServerSocket().accept();System.out.println("与" + socket.getInetAddress().toString().substring(1) + "链路建立成功");Server