socket服务器端链接不上。。。

加盾男爵 2016-09-27 04:01:09
书上有个例子,上面讲了如何用python的socket建立一个服务器端和客户端,然后相互通信的例子
我系统是ubuntukylin14.04,网通50Mb网络,所有防火墙全部关闭(我能关的都关了,但不排除有漏掉的选项)
服务器端代码 TCPServe.py
#/usr/bin/env python
import socket
import time
HostName = ""
HostCode = 65535
HostInfo = (HostName,HostCode)
Buffer = 1024
ST = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ST.bind(HostInfo)
ST.listen(5)
while True:
print "Waiting For Connection...."
TCPHost,addr = ST.accept() #connect
print "...Connect From %s"%addr

while True:
Datas = TCPHost.recv(Buffer)
if Datas == None:
break
Datas = time.ctime() + Datas
TCPHost.send(Datas)
TCPHost.close()
ST.close()

然后我先运行了下这个脚本
结果是
Waiting For Connection....
然后就么有了。。。。我只能用ctrl+c强制关闭他,然后我看代码,我估计是accept()函数出了问题,所以我加了异常代码,想看看到底是什么情况,于是脚本变成了
#/usr/bin/env python
import socket
import time
HostName = ""
HostCode = 65535
HostInfo = (HostName,HostCode)
Buffer = 1024
ST = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ST.bind(HostInfo)
ST.listen(5)
while True:
print "Waiting For Connection...."
try:
TCPHost,addr = ST.accept() #connect
except Exception , e:
print e
else:
print "...Connect From %s"%addr

while True:
Datas = TCPHost.recv(Buffer)
if Datas == None:
break
Datas = time.ctime() + Datas
TCPHost.send(Datas)
TCPHost.close()
ST.close()

我本以为accept()出现问题会有些异常提示,方便问题排查,但运行脚本结果还是
Waiting For Connection....
没有其他任何信息。。。。
遇到这种情况怎么处理
...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Halloween10 2020-01-09
  • 打赏
  • 举报
回复
TCPHost,addr = ST.accept() #connect 问题出在这一行
  • 打赏
  • 举报
回复
先开一个窗口运行python serve.py 再开一个窗口运行python clint.py 另外,你的代码里还有一些错误 serve.py

#/usr/bin/env python
# -*- coding: UTF-8 -*-
import socket
import time
HostName = ""
HostCode = 65535
HostInfo = (HostName,HostCode)
Buffer = 1024
ST = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ST.bind(HostInfo)
ST.listen(5)
while True:
    print "Waiting For Connection...."
    TCPHost,addr = ST.accept()  #accept是阻塞的,除非接收到client的请求,才会执行下一步, 否则一直阻塞
    print "...Connect From ", addr

    while True:
        Datas = TCPHost.recv(1024)
        if Datas == None:
            break
        Datas = time.ctime() + Datas
        TCPHost.send(Datas)
        # TCPHost.close()  # 关闭了还怎么接收。。。不能关闭
ST.close()
clint.py

#/usr/bin/env python
# -*- coding: UTF-8 -*-
import socket
HOST='127.0.0.1'
PORT=65535
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))

print "connect success"

while 1:
    cmd=raw_input("Please input:")
    s.sendall(cmd)
    data=s.recv(1024)
    print "recv: ", data
s.close()   #关闭连接

加盾男爵 2016-09-27
  • 打赏
  • 举报
回复
引用 1 楼 AnonymousRookie 的回复:
再开一个窗口运行客户端: client.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
HOST='127.0.0.1'
PORT=65535
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))
s.close()
我擦。。。。。我使用linux的&&命令的 python Serve.py && python Clint.py 貌似这样是不行的,,,,
加盾男爵 2016-09-27
  • 打赏
  • 举报
回复
引用 1 楼 AnonymousRookie 的回复:
再开一个窗口运行客户端: client.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
HOST='127.0.0.1'
PORT=65535
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))
s.close()
Traceback (most recent call last): File "clientNet.py", line 7, in <module> s.connect((HOST,PORT)) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 111] Connection refused
加盾男爵 2016-09-27
  • 打赏
  • 举报
回复
引用 楼主 qazaq408 的回复:
书上有个例子,上面讲了如何用python的socket建立一个服务器端和客户端,然后相互通信的例子 我系统是ubuntukylin14.04,网通50Mb网络,所有防火墙全部关闭(我能关的都关了,但不排除有漏掉的选项) 服务器端代码 TCPServe.py
#/usr/bin/env python
import socket
import time
HostName = ""
HostCode = 65535
HostInfo = (HostName,HostCode)
Buffer = 1024
ST = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ST.bind(HostInfo)
ST.listen(5)
while True:
    print "Waiting For Connection...."
    TCPHost,addr = ST.accept()                #connect
     print "...Connect From %s"%addr 

    while True:
        Datas = TCPHost.recv(Buffer)
        if Datas == None:
            break
        Datas = time.ctime() + Datas
        TCPHost.send(Datas)
        TCPHost.close()
ST.close()
然后我先运行了下这个脚本 结果是 Waiting For Connection.... 然后就么有了。。。。我只能用ctrl+c强制关闭他,然后我看代码,我估计是accept()函数出了问题,所以我加了异常代码,想看看到底是什么情况,于是脚本变成了
#/usr/bin/env python
import socket
import time
HostName = ""
HostCode = 65535
HostInfo = (HostName,HostCode)
Buffer = 1024
ST = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ST.bind(HostInfo)
ST.listen(5)
while True:
    print "Waiting For Connection...."
    try:
        TCPHost,addr = ST.accept()                #connect
    except Exception , e:
        print e
    else:  
        print "...Connect From %s"%addr 

    while True:
        Datas = TCPHost.recv(Buffer)
        if Datas == None:
            break
        Datas = time.ctime() + Datas
        TCPHost.send(Datas)
        TCPHost.close()
ST.close()
我本以为accept()出现问题会有些异常提示,方便问题排查,但运行脚本结果还是 Waiting For Connection.... 没有其他任何信息。。。。 遇到这种情况怎么处理
Traceback (most recent call last): File "clientNet.py", line 7, in <module> s.connect((HOST,PORT)) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 111] Connection refused
  • 打赏
  • 举报
回复
再开一个窗口运行客户端: client.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
HOST='127.0.0.1'
PORT=65535
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))
s.close()

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧