n00m wrote: > import socket, thread > host, port = '192.168.0.3', 1434 > s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > s2.connect((host, 1433)) > s1.bind((host, port)) > s1.listen(1) > cn, addr = s1.accept() > > def VB_SCRIPT(): > while 1: > data = cn.recv(4096) > if not data: return > s2.send(data) > print 'VB_SCRIPT:' + data + '\n\n' > > def SQL_SERVER(): > while 1: > data = s2.recv(4096) > if not data: return > cn.send(data) > print 'SQL_SERVER:' + data + '\n\n'
Several suggestions: 1. Use repr(data) instead of just 'data' above, to see better the actual bytes without the possibility of control characters like \r and \b screwing things up. 2. I'm not at all sure that accessing the same socket object simultaneously from two threads is safe. You might consider creating a pair of Queue objects to safely communicate the information between the two threads. That, of course, poses the problem of how do you wait on data to arrive from the socket and from the Queue at the same time. One approach is to use non-blocking sockets or timeouts, while the other is to use a pre-existing asynchronous framework such as, say, Twisted, and avoid reinventing the wheel (and making all the same mistakes that other programmers have made zillions of times before you). It's also possible this is not remotely related to your problem, but I suspect without knowing more about SQL Server, VB, and your own setup I'd be guessing wildly anyway... -Peter -- http://mail.python.org/mailman/listinfo/python-list