python 프로 그래 밍 의 twisted 상세 설명 및 간단 한 인 스 턴 스
선언:
나 는 socket 코드 를 잘 쓰 지 못 한다.하 나 는 c 로 쓰 는 것 이 비교적 번 거 로 운 것 이 고,다른 하 나 는 자신 이 평소에 도 이런 방면 의 수요 가 없다 는 것 이다.자신 이 진정 으로 알 고 싶 을 때 비로소 자신 이 이 방면 에서 확실히 개선 해 야 할 부분 이 있다 는 것 을 알 게 되 었 다.최근 프로젝트 때문에 Python 코드 를 써 야 python 아래 에서 socket 을 개발 하 는 것 이 얼마나 시원 한 일 인지 알 수 있 습 니 다.
대부분의 socket 에 있어 서 사용 자 는 사실 세 가지 사건 에 만 관심 을 가지 면 된다.이것 은 각각 데 이 터 를 만 들 고 삭제 하 며 송 수신 하 는 것 이다.python 의 twisted 라 이브 러 리 는 우리 가 이러한 목 표를 완성 하 는 데 도움 을 줄 수 있 고 실 용적 으로 도 번 거 롭 지 않 습 니 다.아래 코드 는 tisted matrix 사이트 에서 왔 습 니 다.저 는 괜 찮 은 것 같 습 니 다.여기에 붙 여서 여러분 과 공유 하 겠 습 니 다.테스트 가 필요 하 다 면 텔 넷 localhost 8123 로 바로 가면 됩 니 다.twisted 에서 신 호 를 처리 해 야 한다 면 signal 함 수 를 먼저 등록 하고 signal 함수 에서 reactor.stop()을 호출 할 수 있 습 니 다.그 다음 에 twisted 는 계속 callstopfactory,이렇게 하면 남 은 청 소 를 계속 완성 할 수 있 습 니 다.
from twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
class Chat(LineReceiver):
def __init__(self, users):
self.users = users
self.name = None
self.state = "GETNAME"
def connectionMade(self):
self.sendLine("What's your name?")
def connectionLost(self, reason):
if self.name in self.users:
del self.users[self.name]
def lineReceived(self, line):
if self.state == "GETNAME":
self.handle_GETNAME(line)
else:
self.handle_CHAT(line)
def handle_GETNAME(self, name):
if name in self.users:
self.sendLine("Name taken, please choose another.")
return
self.sendLine("Welcome, %s!" % (name,))
self.name = name
self.users[name] = self
self.state = "CHAT"
def handle_CHAT(self, message):
message = "<%s> %s" % (self.name, message)
for name, protocol in self.users.iteritems():
if protocol != self:
protocol.sendLine(message)
class ChatFactory(Factory):
def __init__(self):
self.users = {} # maps user names to Chat instances
def buildProtocol(self, addr):
return Chat(self.users)
def startFactory(self):
print 'start'
def stopFactory(self):
print 'stop'
reactor.listenTCP(8123, ChatFactory())
reactor.run()
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.