用c/s模型写了个socket通信的程序。现在想要让服务端能在运行时刻(一直在接受客户端的请求并且处理)检查标准输入或者某个文件,从而来对服务端进行控制(比如停止或者启用某项服务,或者多某项服务的参数进行改变)。那么通过什么方法可以达到这一目的呢?
我现在的想法是,让服务端支持多线程,其中一个线程每隔0.5秒检查某一个文件或者标准输入。
我现在的服务端是用多进程来支持多个客户端的。不知道这样写会不会有问题?
有没有其他的一些办法呢?
Good Luck :)
先运行Socket监听服务程序,同时创建一个0.5s轮询标准输入的线程,然后当每一个客户端连接时为它创建一个进程保持双向连接,当客户端通过Socket发送服务请求时,通过向Socket监听服务程序发送进程消息,然后由轮询线程来执行请求?对这种做法我不太支持,1)为每一个客户创建一个进程开销大,一般不建议这么做。2) 轮询你所说的标准输入,让人摸不着头脑,为什么不等到有客户请求时再去检查处理?3)多进程间通讯效率低且麻烦。
建议做法: 运行Socket监听服务程序,在指定端口监听客户连接,同时打开标准输入返回句柄(windows平台)或描述符(Linux平以),对每个客户连接,创建一个对应的线程,并将句柄或描述符通过线程参数传递给它,当客户发送服务请求指令(自已定义协议),对应的线程直接访问标准输入的句柄或描述符来处理即可。(注意多线程访问同一资源时的同步处理)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。