Re: Sockets: code works locally but fails over LAN
- From: Peter Hansen <peter@xxxxxxxxxxx>
- Date: Wed, 31 Aug 2005 09:13:39 -0400
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 .
- Follow-Ups:
- Re: Sockets: code works locally but fails over LAN
- From: Grant Edwards
- Re: Sockets: code works locally but fails over LAN
- References:
- Prev by Date: Re: use threading without classes
- Next by Date: Re: .pth files in working directory
- Previous by thread: Sockets: code works locally but fails over LAN
- Next by thread: Re: Sockets: code works locally but fails over LAN
- Index(es):
Relevant Pages
|