http协议
import socket
def service_client(new_socket):
""" 为客服端返回数据 """
request = new_socket.recv(1024)
print(request)
response = 'HTTP/1.1 200 OK\r\n'
response += '\r\n'
f = open('./html/index.html', 'rb')
html_content = f.read()
f.close()
new_socket.send(response.encode('utf-8'))
new_socket.send(html_content)
new_socket.close()
def main():
"""用来完成整体的控制"""
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(('', 7890))
tcp_server_socket.listen(128)
while True:
new_socket, client_addr = tcp_server_socket.accept()
service_client(new_socket)
tcp_server_socket.close()
if __name__ == '__main__':
main()
import socket
import re
def service_client(new_socket):
""" 为客服端返回数据 """
request = new_socket.recv(1024).decode('utf-8')
request_lines = request.splitlines()
print('>'*50)
print(request_lines)
file_name = ''
ret = re.match(r'[^/]+(/[^ ]*)', request_lines[0])
if ret:
file_name = ret.group(1)
print('请求的文件:%s' % file_name)
if file_name == '/':
file_name = '/index.html'
try:
f = open('./html' + file_name, 'rb')
except:
response = 'HTTP/1.1 404 NOT FOUND\r\n'
response += '\r\n'
response += '------file not found-----'
new_socket.send(response.encode("utf-8"))
else:
html_content = f.read()
f.close()
response = 'HTTP/1.1 200 OK\r\n'
response += '\r\n'
new_socket.send(response.encode('utf-8'))
new_socket.send(html_content)
new_socket.close()
def main():
"""用来完成整体的控制"""
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(('', 7890))
tcp_server_socket.listen(128)
while True:
new_socket, client_addr = tcp_server_socket.accept()
service_client(new_socket)
tcp_server_socket.close()
if __name__ == '__main__':
main()
import socket
import re
import multiprocessing
def service_client(new_socket):
""" 为客服端返回数据 """
request = new_socket.recv(1024).decode('utf-8')
request_lines = request.splitlines()
print('>'*50)
print(request_lines)
file_name = ''
ret = re.match(r'[^/]+(/[^ ]*)', request_lines[0])
if ret:
file_name = ret.group(1)
print('请求的文件:%s' % file_name)
if file_name == '/':
file_name = '/index.html'
try:
f = open('./html' + file_name, 'rb')
except:
response = 'HTTP/1.1 404 NOT FOUND\r\n'
response += '\r\n'
response += '------file not found-----'
new_socket.send(response.encode("utf-8"))
else:
html_content = f.read()
f.close()
response = 'HTTP/1.1 200 OK\r\n'
response += '\r\n'
new_socket.send(response.encode('utf-8'))
new_socket.send(html_content)
new_socket.close()
def main():
"""用来完成整体的控制"""
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(('', 7890))
tcp_server_socket.listen(128)
while True:
new_socket, client_addr = tcp_server_socket.accept()
p = multiprocessing.Process(target=service_client, args=(new_socket,))
p.start()
new_socket.close()
tcp_server_socket.close()
if __name__ == '__main__':
main()
import socket
import re
import threading
def service_client(new_socket):
""" 为客服端返回数据 """
request = new_socket.recv(1024).decode('utf-8')
request_lines = request.splitlines()
print('>'*50)
print(request_lines)
file_name = ''
ret = re.match(r'[^/]+(/[^ ]*)', request_lines[0])
if ret:
file_name = ret.group(1)
print('请求的文件:%s' % file_name)
if file_name == '/':
file_name = '/index.html'
try:
f = open('./html' + file_name, 'rb')
except:
response = 'HTTP/1.1 404 NOT FOUND\r\n'
response += '\r\n'
response += '------file not found-----'
new_socket.send(response.encode("utf-8"))
else:
html_content = f.read()
f.close()
response = 'HTTP/1.1 200 OK\r\n'
response += '\r\n'
new_socket.send(response.encode('utf-8'))
new_socket.send(html_content)
new_socket.close()
def main():
"""用来完成整体的控制"""
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(('', 7890))
tcp_server_socket.listen(128)
while True:
new_socket, client_addr = tcp_server_socket.accept()
t = threading.Thread(target=service_client, args=(new_socket,))
t.start()
tcp_server_socket.close()
if __name__ == '__main__':
main()
import socket
import re
import gevent
from gevent import monkey
monkey.patch_all()
def service_client(new_socket):
""" 为客服端返回数据 """
request = new_socket.recv(1024).decode('utf-8')
request_lines = request.splitlines()
print('>'*50)
print(request_lines)
file_name = ''
ret = re.match(r'[^/]+(/[^ ]*)', request_lines[0])
if ret:
file_name = ret.group(1)
print('请求的文件:%s' % file_name)
if file_name == '/':
file_name = '/index.html'
try:
f = open('./html' + file_name, 'rb')
except:
response = 'HTTP/1.1 404 NOT FOUND\r\n'
response += '\r\n'
response += '------file not found-----'
new_socket.send(response.encode("utf-8"))
else:
html_content = f.read()
f.close()
response = 'HTTP/1.1 200 OK\r\n'
response += '\r\n'
new_socket.send(response.encode('utf-8'))
new_socket.send(html_content)
new_socket.close()
def main():
"""用来完成整体的控制"""
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(('', 7890))
tcp_server_socket.listen(128)
while True:
new_socket, client_addr = tcp_server_socket.accept()
gevent.spawn(service_client, new_socket)
tcp_server_socket.close()
if __name__ == '__main__':
main()
import socket
import time
tcp_server_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_tcp.bind(('', 7890))
tcp_server_tcp.listen(128)
tcp_server_tcp.setblocking(False)
client_socket_list = list()
while True:
try:
new_socket, new_addr = tcp_server_tcp.accept()
except Exception as ret:
print('---没有新的客户端到来---')
else:
print('---只要没有产生异常,那么也就意味着 来了一个新的客户端----')
new_socket.setblocking(False)
client_socket_list.append(new_socket)
for client_socket in client_socket_list:
try:
recv_data = client_socket.recv(1024)
except Exception as ret:
print(ret)
print('----这个客户端没有发送过来数据----')
else:
print('-----没有异常-----')
print(recv_data)
if recv_data:
print('----客户端发送过来了数据-----')
else:
client_socket.close()
client_socket_list.remove(client_socket)
print('---客户端已经关闭----')
import socket
import re
def service_client(new_socket, request):
"""为这个客户端返回数据"""
request_lines = request.splitlines()
print('')
print('>'*20)
print(request_lines)
file_name = ''
ret = re.match(r'[^/]+(/[^ ]*)', request_lines[0])
if ret:
file_name = ret.group(1)
if file_name == '/':
file_name = '/index.html'
try:
f = open('./html' + file_name, 'rb')
except:
response = 'HTTP/1.1 404 NOT FOUND\r\n'
response += '\r\n'
response += '------file not found-----'
new_socket.send(response.encode('utf-8'))
else:
html_content = f.read()
f.close()
response_body = html_content
response_header = 'HTTP/1.1 200 OK\r\n'
response_header += 'Content-Length:%d\r\n' % len(response_body)
response_header += '\r\n'
response = response_header.encode('utf-8') + response_body
new_socket.send(response)
def main():
"""用来完成整体的控制"""
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(('', 7890))
tcp_server_socket.listen(128)
tcp_server_socket.setblocking(False)
client_socket_list = list()
while True:
try:
new_socket, client_addr = tcp_server_socket.accept()
except Exception as ret:
pass
else:
new_socket.setblocking(False)
client_socket_list.append(new_socket)
for client_socket in client_socket_list:
try:
recv_data = client_socket.recv(1024).decode('utf-8')
except Exception as ret:
pass
else:
if recv_data:
service_client(client_socket, recv_data)
else:
client_socket.close()
client_socket_list.remove(client_socket)
tcp_server_socket.close()
if __name__ == '__main__':
main()
import socket
import re
import select
def service_client(new_socket, request):
"""为这个客户端返回数据"""
request_lines = request.splitlines()
print('')
print('>'*20)
print(request_lines)
file_name = ''
ret = re.match(r'[^/]+(/[^ ]*)', request_lines[0])
if ret:
file_name = ret.group(1)
if file_name == '/':
file_name = '/index.html'
try:
f = open('./html' + file_name, 'rb')
except:
response = 'HTTP/1.1 404 NOT FOUND\r\n'
response += '\r\n'
response += '------file not found-----'
new_socket.send(response.encode('utf-8'))
else:
html_content = f.read()
f.close()
response_body = html_content
response_header = 'HTTP/1.1 200 OK\r\n'
response_header += 'Content-Length:%d\r\n' % len(response_body)
response_header += '\r\n'
response = response_header.encode('utf-8') + response_body
new_socket.send(response)
def main():
"""用来完成整体的控制"""
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(('', 7890))
tcp_server_socket.listen(128)
tcp_server_socket.setblocking(False)
epl = select.epoll()
epl.register(tcp_server_socket.fileno(), select.EPOLLIN)
fd_event_dict = dict()
while True:
fd_event_list = epl.poll()
for fd, event in fd_event_list:
if fd == tcp_server_socket.fileno():
new_socket, client_addr = tcp_server_socket.accept()
epl.register(new_socket.fileno(), select.EPOLLIN)
fd_event_dict[new_socket.fileno()] = new_socket
elif event == select.EPOLLIN:
recv_data = fd_event_dict[fd].recv(1024).decode("utf-8")
if recv_data:
service_client(fd_event_dict[fd], recv_data)
else:
fd_event_dict[fd].close()
epl.unregister(fd)
del fd_event_dict[fd]
tcp_server_socket.close()
if __name__ == '__main__':
main()