服务器端套接字程序挂起 [英] server side socket program hangs

查看:69
本文介绍了服务器端套接字程序挂起的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



i我在python中写了一个套接字程序,包括客户端和服务器

side.I'已写好客户端,工作正常/>
罚款(根据用C编写的服务器程序检查)。但是对于用python编写的我的

服务器程序,它只是hangs.it没有显示任何
$ b还有$ b错误。我已经尝试了可用的示例程序。我不明白是什么原因是因为我对它很陌生。

这里是服务器端程序:


///////////////////////
来自套接字导入的
*

导入套接字

导入sys


HOST =''''#any address

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


试试:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

除了socket.error:

打印''套接字未创建''

尝试:

s.bind((主机,端口) ))

除了socket.error:

打印''绑定错误''

试试:

s.listen(5)

除了socket.error:

打印''听错误''

conn,addr = s.accept()

打印''连接'',addr

而1:

data = conn.recv(1024)

如果不是数据:break

conn.send(data )

conn.close()


有人能告诉我这是什么问题吗?

解决方案

<an**********@sify.com>在消息中写道

news:57 ************************** @ posting.google.c om ...


我正在python中编写一个socket程序,包括客户端和服务器端。我写的客户端工作正常。
很好(用C编写的服务器程序检查)。但是对于用python编写的我的服务器程序,它只是hangs.it也没有显示任何
错误。我已经尝试了可用的示例程序。我不明白是什么原因因为我对它很陌生。
这是服务器端程序:

//////////// //来自socket import * //
导入套接字
import sys

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

< snip code>
有人可以告诉我这是什么问题吗?




您应用的功能旨在简单地将IP地址转移到

字面值v你想要用于你的港口。以下应该显示现在发生的

效果。

PythonWin 2.3.1(#47,2003年9月23日,23:47:32)[MSC v.1200 32位(英特尔)]

win32。

部分版权所有1994-2001 Mark Hammond(mh******@skippinet.com.au) - 请参阅

''帮助/关于PythonWin'以获取更多版权信息。

import socket
socket.htons(9999)
3879




-

Anthony McDonald


此电子邮件地址受SpamBayes保护
www .spambayes.org




卡住了另一个work.now bac到python程序。

i尝试使用

PORT = socket.htons(9999)


它仍然无法正常工作。还有代码。它仍然挂起。某人/>
告诉我什么可能有问题?


#from socket import *

import socket

import sys


HOST =''''#any address

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


类袜子:

def __init__(自我,父母):

尝试:

self.s = socket(AF_INET ,SOCK_STREAM)

除了socket.error:

打印''套接字未创建''

试试:

self.s.bind((HOST,PORT))

除了self.error:

打印''绑定错误''

试试:

self.s.listen(5)

除了self.error:

打印''听错误''

conn,addr = self.s.accept()

#print''连接'','addr`

而1:

data = conn.recv(1024)

如果不是数据:break

conn.send(data)

conn.close ()


thanx,

AKR。


Anthony McDonald < tonym1972 / AT /俱乐部互联网/中/ FR>在留言新闻中写道:< 3f *********************** @ news.club-internet.fr> ...

< an ********** @ sify.com>在消息中写道
新闻:57 ************************** @ posting.google.c om ...


我在python中写了一个套接字程序,包括客户端和服务器端。我写的客户端工作得很好
很好(检查过它)针对用C编写的服务器程序。但是对于用python编写的服务器程序,它只是hangs.it也没有显示任何
错误。我已经尝试了可用的示例程序。我不明白什么
原因是因为我对它很陌生。
这是服务器端程序:

//////////////// // @///
来自socket import *
import socket
import sys

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


< snip code>


有人可以告诉我这是什么问题吗?



您应用的功能旨在简单地转移IP地址选择要用于端口的文字值。以下内容应显示现在正在发生的影响。

PythonWin 2.3.1(#47,2003年9月23日,23:47:32)[MSC v.1200 32 bit(Intel)
win32。
部分版权所有1994-2001 Mark Hammond(mh******@skippinet.com.au) - 请参阅
''帮助/关于PythonWin''进一步了解版权信息。

import socket
socket.htons(9999)3879



<一个********** @ sify.com>在消息中写道

news:57 ************************** @ posting.google.c om ...


卡住了另一个work.now bac到python程序。
我尝试了使用
PORT = socket.htons(9999)

它仍然无法正常工作。还有代码。它仍然挂起。可能有人告诉我什么可能是问题?

#from socket import *
import socket
import sys

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

类袜子:
def __init__(自我,父母):
尝试:
self.s = socket(AF_INET,SOCK_STREAM)
除了socket.error:
打印''套接字未创建''
尝试:
self.s.bind((主机,端口))
除了self.error:
打印''错误绑定''
尝试:
self.s.lis十(5)
除了self.error:
打印''听错误''
conn,addr = self.s.accept()
#print''连接方式'',`addr`
而1:
data = conn.recv(1024)
如果不是数据:break
conn.send(data)
conn。关闭()

thanx,
AKR。



对不起我上次的简短回答,但我希望代码片段我

发布会解释你的代码发生了什么。


你的代码几乎是Python示例的verbatum副本,除了你已经
$ b选择$ b来使用HTONS功能按摩端口值。因此对于大多数

体系结构,端口值9999或9222将更改为3xxx端口范围内的某个位置。尝试在这些端口上连接的任何客户端都将失败。

因此,您注意到C服务器上的成功没有使用该功能,但是您的Python服务器上的
失败是的。解决方案是只分配你想要的

端口值。


-

Anthony McDonald


此电子邮件地址受SpamBayes保护
www.spambayes.org


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?

解决方案

<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


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



<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


这篇关于服务器端套接字程序挂起的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆