CSocket 服务端,多线程 receive send 有关问题 请高手帮忙
CSocket 服务端,多线程 receive send 问题 请高手帮忙
当一个socket对象 成功连接之后,我想用 当前线程作为send,新开辟一个线程,把连接成功的socket对象传入该线程,作为receive, 会因为共用一个socket对象 引起冲突吗?
如果会引起冲突,那么实现这样的一个服务端,该怎么做呢?
------解决方案--------------------
也就是自己给自己发信息,同一个SOCKET对象,倒真没试过。
一般做法是:
一个SOCKET用来send,另一个用来receive。
也就是说,LZ可以在两个线程中分别创建SOCKET对象,其中一个用来发送信息,另一个用来接收信息。
------解决方案--------------------
如果是两个线程(这两个线程属于一个进程)都向一个 SOCKET 写入, 只要是互斥操作的话 应该是可以的
但楼主是 两个线程(这两个线程属于一个进程), 其中一个向 SOCKET 写入, 另一个从 SOCKET 读取, 这也就是 SOCKET 向自己发消息, 我没有试过, 也不知道行不行。 楼主不妨自己写个试一下
还有 要是两个线程(这两个线程属于一个进程), 并且该进程 创建两个 SOCKET , 一个SOCKET 负责写入, 另一个 SOCKET 负责读取, 不知道这样行不行??? 我觉得应该可以
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
不冲突的
------解决方案--------------------
同一个socket,读写是可以同时进行的,不需要加锁。
另,上面很多人说,读一个socket,写又另一个socket,这种人绝对没写过真正的网络应用程序。
当一个socket对象 成功连接之后,我想用 当前线程作为send,新开辟一个线程,把连接成功的socket对象传入该线程,作为receive, 会因为共用一个socket对象 引起冲突吗?
如果会引起冲突,那么实现这样的一个服务端,该怎么做呢?
------解决方案--------------------
也就是自己给自己发信息,同一个SOCKET对象,倒真没试过。
一般做法是:
一个SOCKET用来send,另一个用来receive。
也就是说,LZ可以在两个线程中分别创建SOCKET对象,其中一个用来发送信息,另一个用来接收信息。
------解决方案--------------------
如果是两个线程(这两个线程属于一个进程)都向一个 SOCKET 写入, 只要是互斥操作的话 应该是可以的
但楼主是 两个线程(这两个线程属于一个进程), 其中一个向 SOCKET 写入, 另一个从 SOCKET 读取, 这也就是 SOCKET 向自己发消息, 我没有试过, 也不知道行不行。 楼主不妨自己写个试一下
还有 要是两个线程(这两个线程属于一个进程), 并且该进程 创建两个 SOCKET , 一个SOCKET 负责写入, 另一个 SOCKET 负责读取, 不知道这样行不行??? 我觉得应该可以
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
不冲突的
------解决方案--------------------
同一个socket,读写是可以同时进行的,不需要加锁。
另,上面很多人说,读一个socket,写又另一个socket,这种人绝对没写过真正的网络应用程序。