悬赏分:10 浏览:432 次
我打算做一个远程控制软件,利用反弹连接!
但是,刚刚做就发现问题了,就是,控制端(自己机器)监听了一个端口,被控端(别人的机器)连接了我的机器!问题就在这里了,如果有很多机器连接了我的机器,我怎么可以根据他们的IP发一个信息给他们呢,就是,我必须要发送一个命令 被控端 才会执行相对应的操作吧!
谢谢大家帮忙了,答案最好写详细点,我是菜鸟,不好意思!
|
多台机器连接控制端,控制端需要记住这些TCP连接,当需要向被控端发数据时,在这些TCP连接中根据TCP 远端的IP地址或其它信息找到对应的连接,然后发数据到这个连接就可以了。 1)建议使用多线程,每个远程机器的访问一个线程,并建立类似的 Session 对象。线程可以用线程池管理 2)注意会话结束后清楚 Socket 对象 3)必须有一个清理线程,定时断开与远程客户端的 Socket 连接 一个socket应用,Server 端一般存在两类socket,一个是用于监听连接的socket,一个是保持连接的会话socket |
|
1个月前 财 : 我记住了他的IP,还有连接我的端口,但是,我发送请求的时候,他说远程拒绝了~~ |
|
1个月前 财 : 方便给我写下代码吗???对于socket我有点模糊了~~谢谢大哥 |
|
1个月前 eaglet : 不是发生请求,是利用现有的连接发生。 //blocks until a client has connected to the server System.Net.Sockets.TcpClient client = this._TcpListener.AcceptTcpClient(); 上面这句,在服务器侧获取侦听到的客户端对象。你将这个client 保存到一个数据结构中,当你要想客户端发送消息的时候,你从这个数据结构中找到client ,并调用 NetworkStream clientStream = tcpClient.GetStream(); clientStream.Write(); 这个要有一个前提就是你客户端和服务器侧的TCP连接必须一直保持,如果客户端退出了,你会收到异常。 |
|
1个月前 eaglet : 是发送 不是发生,我写错了 |
|
1个月前 eaglet : tcpClient = 你找到的那个 client |
|
1个月前 财 : 郁闷,还是不行,他报错"不允许对非连接的套接字执行此操作" |
|
1个月前 eaglet : 那是因为客户端已经断开了,连接必须保持。 |
|
1个月前 HuLihui : 朋友,请参考拙文:http://www.cnblogs.com/hulihui/archive/2008/10/05/1304046.html |