写代理服务器程序,发生死锁怎么办?
我做了一个SOCKS5代理服务器程序,用的是SELECT()非阻塞式I/O操作。
用一个客户端的http访问做测试,建立两个socket1,一个连接客户端,另一个socket2连接服务器端。
当socket1又数据可读时,就读,这时对应的socket2应该为可发送数据,把从socket1读来的数据发送给socket2。一直到socket2变为可读,而这时socket1变为可写(发送数据),就从socket2读,写到socket1,应该是这样反复交替传送数据的。
为什么程序运行一会儿,传送一些数据之后,就锁死,socket1变为可写,而不能从socket2中读数据(这时socket2为不可读)。
请问高手,这是怎么回事?