Broken pipe

Ron Eggler ron.eggler at gmail.com
Fri May 7 12:45:10 EDT 2010


-- 
Ron Eggler
Suite# 1804
1122 Gilford St
Vancouver, BC V6G 2P5
Canada
(778) 230-9442
> On Thu, May 6, 2010 at 11:11 PM, Ron Eggler <ron.eggler at gmail.com> wrote:
> > On May 6, 2010 10:37:14 pm Chris Rebert wrote:
> >> On Thu, May 6, 2010 at 10:27 PM, cerr <ron.eggler at gmail.com> wrote:
> >> > Hi There,
> >> > 
> >> > I'm very new to Python and i wanna write a script that sends a certain
> >> > string to a server. The code I came up with looks like this:
> >> > #!/usr/bin/python
> >> > 
> >> > import sys
> >> > import string
> >> > 
> >> > from socket import *
> >> > usage="USAGE: "+sys.argv[0]+" <server> <port>";
> >> > if len(sys.argv) != 3:
> >> >              print usage;
> >> >              sys.exit(0);
> >> > host = sys.argv[1];
> >> > port = sys.argv[2];
> >> > buf = 1024;
> >> > addr = (host,port);
> >> > sock = socket(AF_INET, SOCK_STREAM);
> >> > data = string.join("NovaxTest",'\n');
> >> > sock.send(data);
> >> > sock.close();
> >> > and I'm calling this script like that: "./TestService.py 127.0.0.1
> >> > 1514" but when I call it I get following back:
> >> > sending data to 127.0.0.1:1514
> >> > data: NovaxTest
> >> > Traceback (most recent call last):
> >> >  File "./TestService.py", line 18, in <module>
> >> >    sock.send(data);
> >> > socket.error: [Errno 32] Broken pipe
> >> > I understand that UNIX sends an Errno32 if the server closes the
> >> > connection. But if i telnet to localhost on 1514 and send NovaxTest by
> >> > hand everything works just fine. So what might be wrong here?
> >> 
> >> You never called sock.connect(addr). Your code doesn't even use `addr`
> >> at all.
> > 
> > Oh, yeah, hOOps :$
> 
> <snip>
> 
> > Hm weird now I get something like:
> > Traceback (most recent call last):
> >  File "./TestService.py", line 14, in <module>
> >    sock.connect((host,port))
> >  File "<string>", line 1, in connect
> > TypeError: an integer is required
> 
> <snip>
> 
> > What does that mean? :(
> 
> You never converted `port` to an int, it's still a string.

port = int(sys.argv[2])

doesn't seem to help it either :(
> 
> You might consider reading the socket module docs:
> http://docs.python.org/library/socket.html

mh, i browsed through it but didn't quite find what i'm looking for, do you 
have any more hints?

Thanks,
Ron



More information about the Python-list mailing list