By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,480 Members | 1,146 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,480 IT Pros & Developers. It's quick & easy.

server side socket program hangs

P: n/a
hi,
i am writing a socket program in python,both client side and server
side.I've written the client side which is working perfectly
fine(checked it against server program written in C).but as for my
server program written in python it simply hangs.it does not show any
error also.I've tried sample programs available .I don understand what
the reason is as i am quite new to it.
here is teh server side program:

///////////////////////
from socket import *
import socket
import sys

HOST = '' #any address
PORT = htons(9999) #same port address as client

try:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
except socket.error:
print 'socket not created'
try:
s.bind((HOST,PORT))
except socket.error:
print 'error in bind'
try:
s.listen(5)
except socket.error:
print 'error in listen'
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()

can someone tell me what the problem is?
Jul 18 '05 #1
Share this Question
Share on Google+
11 Replies


P: n/a
<an**********@sify.com> wrote in message
news:57**************************@posting.google.c om...
hi,
i am writing a socket program in python,both client side and server
side.I've written the client side which is working perfectly
fine(checked it against server program written in C).but as for my
server program written in python it simply hangs.it does not show any
error also.I've tried sample programs available .I don understand what
the reason is as i am quite new to it.
here is teh server side program:

///////////////////////
from socket import *
import socket
import sys

HOST = '' #any address
PORT = htons(9999) #same port address as client
<snip code>
can someone tell me what the problem is?


Your applying a function designed to simplyfy transfering IP addresses to a
literal value you want to use for your port. The following should show the
effect thats now happening.

PythonWin 2.3.1 (#47, Sep 23 2003, 23:47:32) [MSC v.1200 32 bit (Intel)] on
win32.
Portions Copyright 1994-2001 Mark Hammond (mh******@skippinet.com.au) - see
'Help/About PythonWin' for further copyright information.
import socket
socket.htons(9999) 3879


--
Anthony McDonald

This email address is protected by SpamBayes
www.spambayes.org
Jul 18 '05 #2

P: n/a
hi,
was stuck with another work.now bac to python program.
i tried out using
PORT = socket.htons(9999)

it still doesn't work.here is the code.it still hangs.can some one
tell me what could be te problem?

#from socket import *
import socket
import sys

HOST = '' #any address
PORT = socket.htons(9222) #same port address as client

class Sock:
def __init__ (self,parent):
try:
self.s = socket(AF_INET,SOCK_STREAM)
except socket.error:
print 'socket not created'
try:
self.s.bind((HOST,PORT))
except self.error:
print 'error in bind'
try:
self.s.listen(5)
except self.error:
print 'error in listen'
conn, addr = self.s.accept()
# print 'Connected by',`addr`
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()

thanx,
AKR.

"Anthony McDonald" <tonym1972/at/club-internet/in/fr> wrote in message news:<3f***********************@news.club-internet.fr>...
<an**********@sify.com> wrote in message
news:57**************************@posting.google.c om...
hi,
i am writing a socket program in python,both client side and server
side.I've written the client side which is working perfectly
fine(checked it against server program written in C).but as for my
server program written in python it simply hangs.it does not show any
error also.I've tried sample programs available .I don understand what
the reason is as i am quite new to it.
here is teh server side program:

///////////////////////
from socket import *
import socket
import sys

HOST = '' #any address
PORT = htons(9999) #same port address as client

<snip code>

can someone tell me what the problem is?


Your applying a function designed to simplyfy transfering IP addresses to a
literal value you want to use for your port. The following should show the
effect thats now happening.

PythonWin 2.3.1 (#47, Sep 23 2003, 23:47:32) [MSC v.1200 32 bit (Intel)] on
win32.
Portions Copyright 1994-2001 Mark Hammond (mh******@skippinet.com.au) - see
'Help/About PythonWin' for further copyright information.
import socket
socket.htons(9999) 3879

Jul 18 '05 #3

P: n/a
<an**********@sify.com> wrote in message
news:57**************************@posting.google.c om...
hi,
was stuck with another work.now bac to python program.
i tried out using
PORT = socket.htons(9999)

it still doesn't work.here is the code.it still hangs.can some one
tell me what could be te problem?

#from socket import *
import socket
import sys

HOST = '' #any address
PORT = socket.htons(9222) #same port address as client

class Sock:
def __init__ (self,parent):
try:
self.s = socket(AF_INET,SOCK_STREAM)
except socket.error:
print 'socket not created'
try:
self.s.bind((HOST,PORT))
except self.error:
print 'error in bind'
try:
self.s.listen(5)
except self.error:
print 'error in listen'
conn, addr = self.s.accept()
# print 'Connected by',`addr`
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()

thanx,
AKR.

Sorry for my brief answer last time, but I had hoped the code fragment I
posted would explain what was happening with your code.

Your code is almost a verbatum copy of the Python example, except you've
chosen to massage the port value using the HTONS function. So for most
architectures the port value 9999 or 9222 would be changed to somewhere in
the 3xxx port range. Any client trying to connect on those ports will fail.
Hence you noted success on a C server which isn't using that function, but
failure on your Python server which is. The solution is to just assign the
port value you want unchanged.

--
Anthony McDonald

This email address is protected by SpamBayes
www.spambayes.org
Jul 18 '05 #4

P: n/a
hi,
My one problem is solved,python server no more hangs,but my main
purpose still remains unsolved,my client is not able to establish
connection.my client is a C program running on a windows machine.On
running the python program,in the python shell i get this way
(cursor)

i assumed my server is waiting for a connection,but my client did not
connect,it failed.
I tried debugging the python program using the step by step debug
control.it moves till def __init__(Self,parent):
and stops(seems to be waiting).It does not move to the next line.
Can you tell me what is happening? and what is the problem with my
server program?Sorry for the trouble,
thanx
AKR.



"Anthony McDonald" <tonym1972/at/club-internet/in/fr> wrote in message news:<3f***********************@news.club-internet.fr>... <an**********@sify.com> wrote in message
news:57**************************@posting.google.c om...
hi,
was stuck with another work.now bac to python program.
i tried out using
PORT = socket.htons(9999)

it still doesn't work.here is the code.it still hangs.can some one
tell me what could be te problem?

#from socket import *
import socket
import sys

HOST = '' #any address
PORT = socket.htons(9222) #same port address as client

class Sock:
def __init__ (self,parent):
try:
self.s = socket(AF_INET,SOCK_STREAM)
except socket.error:
print 'socket not created'
try:
self.s.bind((HOST,PORT))
except self.error:
print 'error in bind'
try:
self.s.listen(5)
except self.error:
print 'error in listen'
conn, addr = self.s.accept()
# print 'Connected by',`addr`
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()

thanx,
AKR.

Sorry for my brief answer last time, but I had hoped the code fragment I
posted would explain what was happening with your code.

Your code is almost a verbatum copy of the Python example, except you've
chosen to massage the port value using the HTONS function. So for most
architectures the port value 9999 or 9222 would be changed to somewhere in
the 3xxx port range. Any client trying to connect on those ports will fail.
Hence you noted success on a C server which isn't using that function, but
failure on your Python server which is. The solution is to just assign the
port value you want unchanged.

Jul 18 '05 #5

P: n/a
hi,
i've posted my doubt on my server program written in python.i am not
able to communicate with any client.My server program does not even
create a socket.can someone tell me what the problem is?
thanx,
AKR
an**********@sify.com wrote in message news:<57**************************@posting.google. com>...
hi,
My one problem is solved,python server no more hangs,but my main
purpose still remains unsolved,my client is not able to establish
connection.my client is a C program running on a windows machine.On
running the python program,in the python shell i get this way

(cursor)

i assumed my server is waiting for a connection,but my client did not
connect,it failed.
I tried debugging the python program using the step by step debug
control.it moves till def __init__(Self,parent):
and stops(seems to be waiting).It does not move to the next line.
Can you tell me what is happening? and what is the problem with my
server program?Sorry for the trouble,
thanx
AKR.



"Anthony McDonald" <tonym1972/at/club-internet/in/fr> wrote in message news:<3f***********************@news.club-internet.fr>...
<an**********@sify.com> wrote in message
news:57**************************@posting.google.c om...
hi,
was stuck with another work.now bac to python program.
i tried out using
PORT = socket.htons(9999)

it still doesn't work.here is the code.it still hangs.can some one
tell me what could be te problem?

#from socket import *
import socket
import sys

HOST = '' #any address
PORT = socket.htons(9222) #same port address as client

class Sock:
def __init__ (self,parent):
try:
self.s = socket(AF_INET,SOCK_STREAM)
except socket.error:
print 'socket not created'
try:
self.s.bind((HOST,PORT))
except self.error:
print 'error in bind'
try:
self.s.listen(5)
except self.error:
print 'error in listen'
conn, addr = self.s.accept()
# print 'Connected by',`addr`
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()

thanx,
AKR.

Sorry for my brief answer last time, but I had hoped the code fragment I
posted would explain what was happening with your code.

Your code is almost a verbatum copy of the Python example, except you've
chosen to massage the port value using the HTONS function. So for most
architectures the port value 9999 or 9222 would be changed to somewhere in
the 3xxx port range. Any client trying to connect on those ports will fail.
Hence you noted success on a C server which isn't using that function, but
failure on your Python server which is. The solution is to just assign the
port value you want unchanged.

Jul 18 '05 #6

P: n/a
hi,
my initial program was to take host value as ''(INADDR_ANY)
only.during my trial and error only i started using
gethostname.however as of now i am running my client (C program) also
from the same machine only.so it should not make any difference.
I've reverted bac to host ''.my program still hangs.i 'v e tried
changing the port address,but doesn't work.pls help
thanx,
AKR.
Jørgen Cederberg <jo*************@hotmail.com> wrote in message news:<9s***************@news.get2net.dk>...
an**********@sify.com wrote:
hi,
i guess no one is ready to help.neways,my problem is getting
solved.I 've slightly modified program (one of the samples found in
the net),now program creates socket,gives bind ,listen success.however
when i debug at accept it goes to the socket.py,at the accept()
function definition.and one more step ahead and it hangs.i dono how to
debug here(inside socket.py).

here is how the code looks like


Hi ...

the program actually works - but there is a quirk, look below for details.

////////////////
from socket import *
import sys

try:
s= socket(AF_INET,SOCK_STREAM)
print 'socket created'
except error:
print 'socket not created'
host = ''
port = 9323
try:
s.bind((gethostname(),port))


You are binding the socket to the hostname of your computer, instead of
''. Thus it will only accept connections specific to the hostname and
therefor fail if you try to connect to localhost or 127.0.0.1

print 'bind success'
except error:
print 'bind'
try:
s.listen(1)
print 'listen success'
except error:
print 'listen'

conn,addr = s.accept()
print 'client is at ', addr
data = conn.recv(1024)
conn.send(data)
conn.close()
////////////////////////
but i have a feeling that teher's some problem with the port or
some problem in the program that it hangs.can anyone help?or atleast
give me few links where i can find a solution,thanx.
AKR.

Hope this helps
Jorgen

Jul 18 '05 #7

P: n/a
an**********@sify.com wrote:
hi,
my initial program was to take host value as ''(INADDR_ANY)
only.during my trial and error only i started using
gethostname.however as of now i am running my client (C program) also
from the same machine only.so it should not make any difference.
I've reverted bac to host ''.my program still hangs.i 'v e tried
changing the port address,but doesn't work.pls help
thanx,
AKR.
Hi

this is pretty odd. As mentioned in the previous mail, the program works
with my client program (written in Python by the way).

You keep saying that the programs 'hang', what do mean by that? I've
tried the program and all I can say is that it works. Are you sure that
your client works correctly?

Regards
Jorgen



Jørgen Cederberg <jo*************@hotmail.com> wrote in message news:<9s***************@news.get2net.dk>...
an**********@sify.com wrote:
> hi,
> i guess no one is ready to help.neways,my problem is getting
> solved.I 've slightly modified program (one of the samples found in
> the net),now program creates socket,gives bind ,listen success.however
> when i debug at accept it goes to the socket.py,at the accept()
> function definition.and one more step ahead and it hangs.i dono how to
> debug here(inside socket.py).
>
> here is how the code looks like


Hi ...

the program actually works - but there is a quirk, look below for details.
>
> ////////////////
> from socket import *
> import sys
>
> try:
> s= socket(AF_INET,SOCK_STREAM)
> print 'socket created'
> except error:
> print 'socket not created'
> host = ''
> port = 9323
> try:
> s.bind((gethostname(),port))


You are binding the socket to the hostname of your computer, instead of
''. Thus it will only accept connections specific to the hostname and
therefor fail if you try to connect to localhost or 127.0.0.1

> print 'bind success'
> except error:
> print 'bind'
> try:
> s.listen(1)
> print 'listen success'
> except error:
> print 'listen'
>
> conn,addr = s.accept()
> print 'client is at ', addr
> data = conn.recv(1024)
> conn.send(data)
> conn.close()
> ////////////////////////
> but i have a feeling that teher's some problem with the port or
> some problem in the program that it hangs.can anyone help?or atleast
> give me few links where i can find a solution,thanx.
> AKR.



Hope this helps
Jorgen


Jul 18 '05 #8

P: n/a
hi,
Well i dono wat more to say.My client side is working properly ,the
error i get in the client side is connection refused.my client
responds to other server programs.
In my earlier postings i'd mentioned that while debugging i am not
able to understand what is happening at the def accept()(function call
in socket.py).
I use debugger control to debug,my program stays still at
accept().First i thought its waiting for a connection,but then my
client failed,morover my server is not ending.(it is not because of
the infinite while loop,i 've checked without the while loop).
When i try to close this program alone all the python applications
close.i guess itz hanging only.I don think it is system dependent.
Neways i tried from other machines ,the program still hangs.I am sorry
,but this is wat all i can say.
Do tell if there are any kind of problem related.
thanx,
AKR.
Jørgen Cederberg <jo*************@hotmail.com> wrote in message news:<dK***************@news.get2net.dk>...
an**********@sify.com wrote:
hi,
my initial program was to take host value as ''(INADDR ANY)
only.during my trial and error only i started using
gethostname.however as of now i am running my client (C program) also
from the same machine only.so it should not make any difference.
I've reverted bac to host ''.my program still hangs.i 'v e tried
changing the port address,but doesn't work.pls help
thanx,
AKR.


Hi

this is pretty odd. As mentioned in the previous mail, the program works

with my client program (written in Python by the way).

You keep saying that the programs 'hang', what do mean by that? I've
tried the program and all I can say is that it works. Are you sure that
your client works correctly?

Regards
Jorgen



J rgen Cederberg <jo*************@hotmail.com> wrote in message news:

<9s***************@news.get2net.dk>...
an**********@sify.com wrote:
> hi,
> i guess no one is ready to help.neways,my problem is getting
> solved.I 've slightly modified program (one of the samples found in
> the net),now program creates socket,gives bind ,listen success.howev er > when i debug at accept it goes to the socket.py,at the accept()
> function definition.and one more step ahead and it hangs.i dono how to > debug here(inside socket.py).
>
> here is how the code looks like

Hi ...

the program actually works - but there is a quirk, look below for deta ils.
>
> ////////////////
> from socket import *
> import sys
>
> try:
> s= socket(AF INET,SOCK STREAM)
> print 'socket created'
> except error:
> print 'socket not created'
> host = ''
> port = 9323
> try:
> s.bind((gethostname(),port))

You are binding the socket to the hostname of your computer, instead o f ''. Thus it will only accept connections specific to the hostname and therefor fail if you try to connect to localhost or 127.0.0.1
> print 'bind success'
> except error:
> print 'bind'
> try:
> s.listen(1)
> print 'listen success'
> except error:
> print 'listen'
>
> conn,addr = s.accept()
> print 'client is at ', addr
> data = conn.recv(1024)
> conn.send(data)
> conn.close()
> ////////////////////////
> but i have a feeling that teher's some problem with the port or
> some problem in the program that it hangs.can anyone help?or atleast give me few links where i can find a solution,thanx.
> AKR.
Hope this helps
Jorgen

Jul 18 '05 #9

P: n/a
hi,
do u think there's a version problem?i am using Python 2.2 (windows
2000).is it related in any way?
thanx,AKR.

Jørgen Cederberg <jo*************@hotmail.com> wrote in message news:<dK***************@news.get2net.dk>...
an**********@sify.com wrote:
hi,
my initial program was to take host value as ''(INADDR ANY)
only.during my trial and error only i started using
gethostname.however as of now i am running my client (C program) also
from the same machine only.so it should not make any difference.
I've reverted bac to host ''.my program still hangs.i 'v e tried
changing the port address,but doesn't work.pls help
thanx,
AKR.


Hi

this is pretty odd. As mentioned in the previous mail, the program works

with my client program (written in Python by the way).

You keep saying that the programs 'hang', what do mean by that? I've
tried the program and all I can say is that it works. Are you sure that
your client works correctly?

Regards
Jorgen



J rgen Cederberg <jo*************@hotmail.com> wrote in message news:

<9s***************@news.get2net.dk>...
an**********@sify.com wrote:
> hi,
> i guess no one is ready to help.neways,my problem is getting
> solved.I 've slightly modified program (one of the samples found in
> the net),now program creates socket,gives bind ,listen success.howev er > when i debug at accept it goes to the socket.py,at the accept()
> function definition.and one more step ahead and it hangs.i dono how to > debug here(inside socket.py).
>
> here is how the code looks like

Hi ...

the program actually works - but there is a quirk, look below for deta ils.
>
> ////////////////
> from socket import *
> import sys
>
> try:
> s= socket(AF INET,SOCK STREAM)
> print 'socket created'
> except error:
> print 'socket not created'
> host = ''
> port = 9323
> try:
> s.bind((gethostname(),port))

You are binding the socket to the hostname of your computer, instead o f ''. Thus it will only accept connections specific to the hostname and therefor fail if you try to connect to localhost or 127.0.0.1
> print 'bind success'
> except error:
> print 'bind'
> try:
> s.listen(1)
> print 'listen success'
> except error:
> print 'listen'
>
> conn,addr = s.accept()
> print 'client is at ', addr
> data = conn.recv(1024)
> conn.send(data)
> conn.close()
> ////////////////////////
> but i have a feeling that teher's some problem with the port or
> some problem in the program that it hangs.can anyone help?or atleast give me few links where i can find a solution,thanx.
> AKR.
Hope this helps
Jorgen

Jul 18 '05 #10

P: n/a
an**********@sify.com wrote:
hi,
do u think there's a version problem?i am using Python 2.2 (windows
2000).is it related in any way?
I'm also using Python 2.2 on a W2K machine. Sorry, I have no clue how to
help you.

Sorry
Jorgen
thanx,AKR.

<snipped>

Jul 18 '05 #11

P: n/a
hi,
My problem is solved finally.......:-))))))))))
it was the problem with port address.my server side does not accept
little endian,i need to convert it to big endian form...like if am
using the port address 9020 on the client side ,the corresponding big
endian wud be 15395 ( to be used in my server).so that was wat was
creating so much trouble..
neways thanx a lot for all the help.
AKR.
Jørgen Cederberg <jo*************@hotmail.com> wrote in message news:<nz*************@news.get2net.dk>...
an**********@sify.com wrote:
hi,
do u think there's a version problem?i am using Python 2.2 (windows
2000).is it related in any way?


I'm also using Python 2.2 on a W2K machine. Sorry, I have no clue how to
help you.

Sorry
Jorgen
thanx,AKR.

<snipped>

Jul 18 '05 #12

This discussion thread is closed

Replies have been disabled for this discussion.