11 个解决方案
#1
通过一个单件类的接口访问。
#2
同步socket
#3
我在两个线程中,同时要接收和发送数据,使两个线程接收到客户端的数据相同,发送的数据不同.同步socket应该如何使用?可以解决我的问题吗?
#4
初学者,请各位说的具体一点吧?应该怎样使用呀?
#5
各位指点一下吧!很疑惑,以前也没怎么接触过线程。
#6
锁定SOCKET缓冲区,给你段代码吧。
EnterCriticalSection(&pdlg->Section_work[pthreadarg->i]);
send(pdlg->m_data_pack[pthreadarg->i].GetHead().sockinfo.sock,(char*)
(&my_data.packhead),sizeof(my_data.packhead),0);
LeaveCriticalSection(&pdlg->Section_work[pthreadarg->i]);
EnterCriticalSection(&pdlg->Section_work[pthreadarg->i]);
send(pdlg->m_data_pack[pthreadarg->i].GetHead().sockinfo.sock,(char*)
(&my_data.packhead),sizeof(my_data.packhead),0);
LeaveCriticalSection(&pdlg->Section_work[pthreadarg->i]);
#7
如果不能安全跨线程操作,就在使用前上锁,用完解锁
#8
就是避免多线程同时操作sock.
一般send_thread recv_thread. accept_thread
一般send_thread recv_thread. accept_thread
#9
你创建线程2的时候,可以将SOCKET套接字句柄作为线程函数的参数传递进入即可。
#10
怎么不给分啊?
#11
将socket句柄当做线程堆栈参数传递到线程中去,或者找个socket管理类,然后想法吧找个socket管理类放进去,通过这个类可以收发数据,以及心跳的处理,断线。
#1
通过一个单件类的接口访问。
#2
同步socket
#3
我在两个线程中,同时要接收和发送数据,使两个线程接收到客户端的数据相同,发送的数据不同.同步socket应该如何使用?可以解决我的问题吗?
#4
初学者,请各位说的具体一点吧?应该怎样使用呀?
#5
各位指点一下吧!很疑惑,以前也没怎么接触过线程。
#6
锁定SOCKET缓冲区,给你段代码吧。
EnterCriticalSection(&pdlg->Section_work[pthreadarg->i]);
send(pdlg->m_data_pack[pthreadarg->i].GetHead().sockinfo.sock,(char*)
(&my_data.packhead),sizeof(my_data.packhead),0);
LeaveCriticalSection(&pdlg->Section_work[pthreadarg->i]);
EnterCriticalSection(&pdlg->Section_work[pthreadarg->i]);
send(pdlg->m_data_pack[pthreadarg->i].GetHead().sockinfo.sock,(char*)
(&my_data.packhead),sizeof(my_data.packhead),0);
LeaveCriticalSection(&pdlg->Section_work[pthreadarg->i]);
#7
如果不能安全跨线程操作,就在使用前上锁,用完解锁
#8
就是避免多线程同时操作sock.
一般send_thread recv_thread. accept_thread
一般send_thread recv_thread. accept_thread
#9
你创建线程2的时候,可以将SOCKET套接字句柄作为线程函数的参数传递进入即可。
#10
怎么不给分啊?
#11
将socket句柄当做线程堆栈参数传递到线程中去,或者找个socket管理类,然后想法吧找个socket管理类放进去,通过这个类可以收发数据,以及心跳的处理,断线。