※ 引述《gn00618777 (非常念旧)》之铭言:
: 我知道在 main(int argc, char*argv){
: }
: 可以传外部参数进去例如 xxx.exe "参数"
: 但如果我在 main 里面有一个无穷循环 while
: while 里面我该如何获得外面传进来的参数呢??(假设这个无穷循环不能read file)
: 短时间内想不出来="=
: 谢谢指教
我把我自己服务器用的TCP and Unix domain Socket IPC整理在github上
https://github.com/hn12404988/Neural_Socket
这个专案的目的是“轻量,高效,稳定”的IPC,所以选择TCP socket 和 Unix Domain
另外目前只有在Linux上测试而已,OSX我猜应该没问题,windows可能就要改写一些地方
server特色:
每个connection有自己的thread独立运作,意思就是,一个server可以被好几个client连接
每个thread接收自己的讯息,不会在开thread处理,所以处理完这个讯息回复后,才会处理
下一个进来的讯息,如果connection被client关掉或是不明原因中断连线,server会自己回收
掉那个thread
client特色:
一个client可以同时跟好几个server保持连线,需要设定一个最大连线数,如果满了之后,
又有新的server要连线,client会关掉最少用的连线,然后加入新的。
除了传统的“传送然后接收”,还有“射后不理”,就是client发送讯息后,就开一个新的
thread自己去接收不重要的回复,不会影响main thread运作。
“射后不理”不用担心如果server处理太慢,或是client射太快,server有可能一次把两次
的讯息一次读取进去,因为client如果知道上一个“射后不理”还没收到server的回传
client会把新的讯息先存起来,等到上一个回来了,就会把讯息在马上送出去
Note:
可以看得出来,server不管怎样一定要回传讯息,不然会拖慢到client的速度,虽然最终
client都会放弃没有讯息回传的沟通,但会严重影响效能。
其他细节请看example档案,自己compile跑看看,如果有问题请在跟我说,或github上issue