?》》》不同线程之间的通讯,该怎样实现》》???请教高手!等待!

wuyeniao 2002-09-23 02:58:52
我学习了Socket类,用它作了一个类似于QQ的东西,(很简陋)

大体想法如下:
S端主线程循环侦听固定的端口,如果有连接,则开始新的线程,线程中侦听某个新的端口,主线程“通知”连接的C端向这个新的端口进行连接后与C端断开,重新开始侦听循环。在线程中C与S连接,产生一条(TCP,Stream)“通讯回路”,可接受或者发送数据。

S端用一个结构数组来管理所有的与C端连接的Socket及其他相关的东西(比如发送缓冲区,接收缓冲区等等),原来以为C向C端发送数据的工作很简单,不过是向向某个结构的缓冲区读取或者写入,然后发送就行了,但是:我想错了! 我面临的是如何在不同的线程之间进行数据交换,重点是要知道何时缓冲区可以读写,什么时候不可以。
我想请教高手们:我的想法(程序的结构)是否合理?不同线程的数据交换用一个什么样的思路作呢?在线等待哦。。。
...全文
27 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyeniao 2002-09-23
  • 打赏
  • 举报
回复
>>sdsxc(我为卿狂)

我不太明白你的话,C和S的连接已经没有问题,

举个例子说明一下:

在Thread1中C1向S的Socket1发送了数据,要求将数据发送到C2,(与C2连接的S端是Socket2,所处的线程为Thread2),我想让Socket1接收的数据(存储在我自己定义的接收缓冲区Byte[]AcceptBufer里)通过一种方法(例如事件)发送到Socket2的发送缓冲区里(我自己定义的缓冲区,即Byte[]SendBufer),然后让Socket2向C2端发送。但是因为是不同的线程,是并行的,存在线程Thread1向Socket2的发送缓冲区Sendbufer写入时,Thread2也向发送缓冲区Sendbufer写数据,这是很危险的。

我主要想知道,C/S 在基于 Stream,TCP,多线程的要求上,该有一个怎样的思路。因为我对自己的思路感到混乱,不知道对不对,是不是有更好的思路,请教了!
sdsxc 2002-09-23
  • 打赏
  • 举报
回复
你可以设置几个socket连接,然后监听,当监听到请求后,看看那个socket连接没有打开,就用它连接。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧