Bryan Olson wrote: > Ah, yes, I see. (In my defense, I had already fixed that bug in > my second version.) 1. Yes! I myself noticed that, but your 2nd version looks a bit more verbose. 2. This all means... what? ONLY send() vs sendall() matters? Sometimes send() really sends ALL and my version works too! I must give it a thorough testing! 3. See how it looks in SQL Server Profiler (it's its utility for tracing client/server events) WHEN I started 5 copies of .vbs. http://free.7host02.com/n00b/SQL_Profiler.gif
Btw, without s2.shutdown(1) those vbs' do NOT disconnect from the server (see DISCONNECT events on the gif). The latest python version: ============================== import socket, thread sqls_host, sqls_port = '127.0.0.1', 1433 proxy_host, proxy_port = '127.0.0.1', 1434 # How I tested it: # sqls_host, sqls_port = 'www.google.com', 80 def VB_SCRIPT(s2, cn): while 1: data = cn.recv(4096) if not data: s2.shutdown(1) return s2.sendall(data) print 'VB_SCRIPT:' + data + '\n' def SQL_SERVER(s2, cn): while 1: data = s2.recv(4096) if not data: return cn.sendall(data) print 'SQL_SERVER:' + data + '\n' s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s1.bind((proxy_host, proxy_port)) s1.listen(5) while 1: cn, addr = s1.accept() s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s2.connect((sqls_host, sqls_port)) thread.start_new_thread(VB_SCRIPT,(s2, cn)) thread.start_new_thread(SQL_SERVER,(s2, cn)) The vbs text: ============== Set cn = CreateObject("ADODB.Connection") cn.Open _ "Provider=sqloledb;Data Source=127.0.0.1,1434;" & _ "Network Library=DBMSSOCN;Initial Catalog=pubs;" & _ "User ID=qwe;Password=asdasd;" cn.Execute _ "select 'AAAAAAAAAAAAAAA';" & _ "waitfor delay '00:00:02'; raiserror('XXX',10,1) with nowait;" & _ "waitfor delay '00:00:02'; raiserror('YYY',10,1) with nowait;" & _ "waitfor delay '00:00:02'; raiserror('ZZZ',10,1) with nowait;" & _ "select 'BBBBBBBBBBBBBBB';" cn.Close Set cn = Nothing -- http://mail.python.org/mailman/listinfo/python-list