c++多线程socket服务器端发数据

RT,unsigned__stdcallthread(void*){//m_TEMP=open_TEMP_Com();//temprature_send(m_TEMP);... RT,
unsigned __stdcall thread(void*)
{
//m_TEMP = open_TEMP_Com();
//temprature_send(m_TEMP);
//Sleep(5000);
cout <<"In second thread..." <<endl;
while (!stop_thr){
//m_TEMP = open_TEMP_Com();
//temprature_send(m_TEMP);
Sleep(1000);
cout <<Count++ <<" " <<flush;
char* sendData_t = "The Second Thread!";
send(sClient_t, sendData_t, strlen(sendData_t), 0);
}
return 0;
}
以上为我的测试程序,功能是每隔一秒输出1个数,同时向客户端发送数据。
我在服务器端除了主线程(主线程内也需要发送和接收数据)外,还想开辟一个线程(上面的函数),用于向客户端实时的发送当前的温度数据,
在主函数运行后,输出数的功能实现了,发送的功能没有实现,(只是这里的发送没有实现,客户端可以接收到主线程发送的数据,接收不到这里的发送的这个字符串。)

刚开始接触多线程,上面的程序也是由别人的改的,希望各位不吝赐教,多谢!
另:如果有别的实现功能的方法,求大神给个指导啊!!
main()里面的socket通信部分代码:
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
匿名用户
2014-11-29
展开全部
介意不介意把两个项目的工程加上功能说明打包发一下?1248389385@qq.com(现在很晚了,白天有时间)
不然你自己在发送的地方打断点,看看返回什么信息;
如果确定发送没有问题,再看看接收端。
更多追问追答
追问
工程文件真的不方便发,想请教您一下,现在我在第二个线程里面只用了一个send函数,感觉这样要发出去的话可能需要用到主线程定义的端口什么的,是不是线程之间的这种调用不能实现啊?两个线程里面都有socket通信的话,是不是我还要在第二个线程里面重新创建新的socket通信的套接字,blind、listen、accept这些东西是不是都要重新写,还是只在主线程里面就够了?
追答
多线程可以共享一个socket,另外好像同一个ip和同一个端口不可以同时被监听,你想象一下如果两个程序同时监听一个端口成功的话,别的程序给这个端口发送数据,ip层都不知道传给谁了。
我刚在网上随便找个简单的TCP例子,在SERVER端多开一个循环发送数据的线程,CLIENT端接收数据很正常,全部都能收到。
你在你server端多开的线程里send打断点或者打印日志,看看发送成功没有?
确保发送成功的话,那就看看client端接收的地方,看他是否一直在等待接收。
光看你给的一个send线程和主线程接收代码,我暂时看不出问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式