python/asyncore 에코서버

Posted at 2009/02/01 18:39// Posted in python/pynetworks

import asyncore
import socket

class EchoUser(asyncore.dispatcher_with_send):
def __init__(self, conn, addr):
asyncore.dispatcher_with_send.__init__(self, conn)
print "new_user:", conn, addr
self.conn = conn
self.addr = addr

def handle_read(self):
data = self.recv(1024)
if data:
self.send(data)

def handle_close(self):
print "del_user:", self.conn, self.addr
self.close()


class EchoServer(asyncore.dispatcher):
def __init__(self):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(("", 2000))
self.listen(5)

def handle_accept(self):
conn, addr = self.accept()
EchoUser(conn, addr)

s = EchoServer()
asyncore.loop()


지금까지 파이썬 네트워크 코드는 전부 socket 을 사용해서 직접 구현했는데-_-;
asyncore 라는 간단한 구현이 있었네요 orz;;
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/02/01 18:39 2009/02/01 18:39

http://cybershin.x-y.net/tt/trackback/196

트랙백을 걸줄 몰라서 일단 링크입니다 ~(-_-)~

서버 관리툴을 만들면서 리모트로 접속해서 이것저것 하고 싶을때

그냥



os.system
('ssh 아이디@주소 "명령어1;명령어2"')


이런식으로 작업했었는데

paramiko 이런게 있다네요 햐햐

나중에 써먹어봐야지


ps.
근데  os.system 함수는 글작성이 안되네요-_-;
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/12/28 23:52 2008/12/28 23:52
Tag ,

python/소켓 수신 버퍼 크기 조정

Posted at 2008/07/04 18:32// Posted in python/pynetworks
from socket import *
s.setsockopt(SOL_SOCKET, SO_RCVBUF, newSize)
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/07/04 18:32 2008/07/04 18:32
Tag ,

python 간단한 에코 서버

Posted at 2007/07/10 11:22// Posted in python/pynetworks
# telnet localhost 10000 으로 접속합니다.
from
socket import *
import os

listener = socket(AF_INET, SOCK_STREAM)
listener.bind(("", 10000))
listener.listen(5)
conn_sock, conn_addr = listener.accept()
(conn_ip, conn_port) = conn_addr
conn_host = gethostbyaddr(conn_ip)[0]
print "%s (%s) connect\n" % (conn_host, conn_ip)

while True:
        buf = conn_sock.recv(100)
        if not buf:
                conn_sock.close()
                break
        conn_sock.send(buf)

listener.close()


이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/07/10 11:22 2007/07/10 11:22