iPh*_*eDv 9 python sockets macos twisted
我正在按照教程http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server在Mac OS X环境中使用套接字编程创建示例.
我正在使用post 80 for reactor.listenTCP(80,factory).当我运行server.py文件时,收到错误:
File "server.py", line 10, in <module>
reactor.listenTCP(6, factory)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/posixbase.py", line 436, in listenTCP
p.startListening()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/tcp.py", line 641, in startListening
raise CannotListenError, (self.interface, self.port, le)
twisted.internet.error.CannotListenError: Couldn't listen on any:80: [Errno 48] Address already in use.
Run Code Online (Sandbox Code Playgroud)
源代码如下:
from twisted.internet.protocol import Factory, Protocol
from twisted.internet import reactor
class IphoneChat(Protocol):
def connectionMade(self):
self.factory.clients.append(self)
print "clients are ", self.factory.clients
def connectionLost(self, reason):
self.factory.clients.remove(self)
factory = Factory()
factory.protocol = IphoneChat
factory.clients = []
reactor.listenTCP(80, factory)
print "Iphone Chat server started"
reactor.run()
Run Code Online (Sandbox Code Playgroud)
如果我正在使用另外的端口,如6等,它工作正常.我只是想知道,我怎样才能将端口80用于同一个应用程序.
小智 7
实际上,我刚刚遇到了这个问题.
这是我做的:
MacBook-Air:Desktop user$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Python 1276 root 3u IPv4 ****** 0t0 TCP *:http (LISTEN)
MacBook-Air:Desktop user$ sudo kill 1276
MacBook-Air:Desktop user$ sudo python server.py
Iphone Chat server started
Run Code Online (Sandbox Code Playgroud)
一切顺利.
对我来说,问题是apache已经在端口80上听了.似乎很多人谷歌通过这篇文章和其他有这个问题,但我没有看到这个特定的答案提供.这对我有用,所以我认为如果它有所帮助我会添加它:运行Mac/Mavericks但问题会出现在Apache默认运行的任何其他系统上......或者可能会忘记它正在运行.
难道
sudo lsof -i TCP:80 | grep LISTEN
Run Code Online (Sandbox Code Playgroud)
拿到
httpd 20 root 4u IPv6 0x1d12a12e12345b12 0t0 TCP *:http (LISTEN)
httpd 109 _www 4u IPv6 0x1d12a12e12345b12 0t0 TCP *:http (LISTEN)
httpd 437 _www 4u IPv6 0x1d12a12e12345b12 0t0 TCP *:http (LISTEN)
httpd 438 _www 4u IPv6 0x1d12a12e12345b12 0t0 TCP *:http (LISTEN)
httpd 439 _www 4u IPv6 0x1d12a12e12345b12 0t0 TCP *:http (LISTEN)
Run Code Online (Sandbox Code Playgroud)
没有
sudo apachectl stop
Run Code Online (Sandbox Code Playgroud)
之后服务器在端口80上工作得很好.
| 归档时间: |
|
| 查看次数: |
7139 次 |
| 最近记录: |