티스토리 뷰
Server :
※HOST정보는 알아서 수정. 서버측은 자신을 가르킨다고 생각하며 됨.
자신의 컴퓨터에서 서버와 클라이언트 다 돌린다고 한다면,
HOST = "127.0.0.1"
로 해도 무방하다.
import socket
HOST = "192.168.8.1"
PORT = 4000
mysocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
mysocket.bind((HOST, PORT)) #Server Binding...
hosts = [] #접속된 클라이언트들의 주소를 담는 부분
while 1:
print "Listening...\n"
packet, address = mysocket.recvfrom(1024)
if not(hosts.count(address)): #접속된 클라이언트가 리스트에 없으면..
hosts.append(address) # 정보를 리스트에 넣는다.
print "Connect hosts : ",hosts
print "Packet recevied"
print "From : %s, port : %s"%(address[0],address[1])
print "Length : ",len(packet)
print "Content : ",packet
if (packet == "quit"):
mysocket.sendto("quit",address)
hosts.remove(address) # 클라이언트에서 종료하면 리스트에서 뺀다.
if not(len(hosts)):break # 리스트에 아무것도 없으면 서버도 종료.
else:
print "\nEcho data!"
mysocket.sendto(packet,address)
mysocket.close() |
Client :
import socket
HOST = "192.168.8.1"
PORT = 4000
mysocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while 1:
packet = raw_input("Packet >>> ")
print "\nSending data >>> ",packet
mysocket.sendto(packet,(HOST,PORT))
print "Packet sended.."
packet, address = mysocket.recvfrom(1024)
if(packet == "quit"):
print "quit!!"
break
print "Packet recevied!"
print "From : %s, Port : %s"%(address[0],address[1])
print "Length : ",len(packet)
print "Packet : ",packet
print "\n"
mysocket.close() |
비연결 지향은 재미있게도, 백로그를 지정하여 서버측에서 리스닝을 하지 않는다. 그런 점은 클라이언트 프로그램을 이용하여 누구나 서버가 Binding되어 있으면 접속하여 작업요청을 수행 할 수 있다는 점이다.
서버는 한군데 돌리고, 여러군데에서 클라이언트 프로그램을 돌려도 모두 서버에 접속되고 동작가능하다.
어드레스 리스트를 이용해서 접속된 클라이언트들을 확인할 수 있다.
어드레스 리스트에 정보가 없으면 종료!
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Material
- frontend
- 파이썬
- 미래
- SQL
- 개발자
- JS
- SVN
- angular
- technote
- IE
- RUBY
- Branch
- Python
- FLASK
- 테스트
- RESTful
- vuejs
- SSL
- 브랜치
- Git
- ie11
- 테크노트
- jQuery
- LightBox
- NG
- 클라우드
- Ai
- 전략
- directive
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함