Всем привет! Сегодня я покажу пример реализации простого клиент-сервера на Python.
Цель:
Исходники:
Клиент сервер на TCP
UDP клиент-сервер
клиент
Ну вот собственно все=) Дальше покажу пример чата на сокетах, опять же в TCP и UDP версиях.
На вопросы обязательно отвечу в комментариях. Пишите.
Цель:
Реализовать службу Daytime (официальный номер порта 13), как ориентированную, так и не ориентированную на соединение.
Daytime-сервер, ориентированный на соединение прослушивает порт 13. Как только появляется запрос на соединение, сервер принимает запрос и тут же отсылает строку, содержащую информацию о текущем времени и дате. После этого сервер закрывает соединение (все пришедшие во время соединения данные от клиента игнорируются).
Daytime-сервер, не ориентированный на соединение ждет датаграмму на порту 13. Как только появляется сообщение (вся данные в сообщении игнорируются), сервер тут же отсылает строку, содержащую информацию о текущем времени и дате.
Примечание: Стандарт (RFC 867) не устанавливает спецификацию формата возвращаемой строки, но рекомендует чтобы она состояла из печатных ASCII-символов и заканчивалась комбинацией CrLf. Пример строки: “Tuesday, February 22, 1982 17:37:43-PST”.Исходники:
Клиент сервер на TCP
# -*- coding: utf-8 -*- __author__ = "dehimer Novikov Denis Yurevich" # connection-oriented server import socket import time server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(("localhost", 13)) server_socket.listen(5) print "TCPServer Waiting for client on port 13" while 1: client_socket, address = server_socket.accept() have_connect = 1 #if all clients are disconnected while have_connect: data = client_socket.recv(256) print len(data) print data if (data <> 'Q' and data <> 'q'): print "I got a connection from ", address data = ('On server now: ' + time.asctime(time.localtime())+ '\n') client_socket.send(data) else: client_socket.close() have_connect = 0 break;
# -*- coding: utf-8 -*- __author__ = "dehimer Novikov Denis Yurevich" # connection-oriented client import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(('localhost', 13)) while 1: data = raw_input ( "SEND( TYPE q or Q to Quit):" ) if (data <> 'Q' and data <> 'q'): client_socket.send(data) data = client_socket.recv(256) print data else: client_socket.send(data) client_socket.close() break;
# -*- coding: utf-8 -*- __author__ = "dehimer Novikov Denis Yurevich" # not a connection-oriented server import socket import time server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_socket.bind(("", 13)) print "UDPServer Waiting for client on port 13" while 1: data, address = server_socket.recvfrom(256) #receive data and sender's address data = ('On server now: ' + time.asctime(time.localtime())+ '\n') server_socket.sendto(data, address) print "I got a connection from ( " ,address[0], " " , address[1] , " ) "
# -*- coding: utf-8 -*- __author__ = "dehimer Novikov Denis Yurevich" # not a connection-oriented client import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while 1: data = raw_input("Type something(q or Q to exit): ") if (data <> 'q' and data <> 'Q'): client_socket.sendto(data, ('127.0.0.1', 13)) data = client_socket.recv(256) # receive up to 256 bytes print data else: break client_socket.close()
Результат:
Ориентированный на соединение сервер/клиент:
сервер
Неориентированный на соединение сервер/клиент:
сервер
клиент
Ну вот собственно все=) Дальше покажу пример чата на сокетах, опять же в TCP и UDP версиях.
На вопросы обязательно отвечу в комментариях. Пишите.
New Jersey: New Jersey casinos get casino game list
ОтветитьУдалитьNew Jersey 계룡 출장안마 became the first 전라남도 출장샵 state to 전라북도 출장안마 legalize online gaming in 2019 안산 출장안마 after Governor 밀양 출장안마 Chris Christie signed the law into law in 2018. The state is now