python19 网络编程
1
client 客户端
from socket import socket, AF_INET, SOCK_STREAM
socket = socket(AF_INET, SOCK_STREAM)
conn_addr = ('192.168.1.100', 8001)
socket.connect(conn_addr)
socket.send('hello'.encode('utf-8'))
socket.close()
server 服务器端
from socket import socket, AF_INET, SOCK_STREAM
serversocket = socket(AF_INET, SOCK_STREAM)
serversocket.bind(('', 8001))
serversocket.listen()
while True:
sock, addr = serversocket.accept()
print('已连接', addr)
data = sock.recv(1024)
print(data.decode('utf-8'))
2
c
from socket import socket, AF_INET, SOCK_STREAM
socket = socket(AF_INET, SOCK_STREAM)
conn_addr = ('192.168.1.100', 8001)
socket.connect(conn_addr)
while True:
print('已连接服务器')
msg = input('请输入给server说:')
socket.send(msg.encode('utf-8'))
if msg == 'bye':
break
data = socket.recv(512).decode('utf-8')
print('server说:{}'.format(data))
if data == 'bye':
break
socket.close()
s
from socket import socket, AF_INET, SOCK_STREAM
serversocket = socket(AF_INET, SOCK_STREAM)
serversocket.bind(('', 8001))
serversocket.listen()
while True:
sock, addr = serversocket.accept()
print('已连接', addr)
while True:
data = sock.recv(512).decode('utf-8')
print('client说:{}'.format(data))
if data == 'bye':
break
msg = input('输入给client的回话:')
sock.send(msg.encode('utf-8'))
if msg == 'bye':
break
sock.close()
3
c
from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
client = socket(AF_INET, SOCK_STREAM)
con_address = ('192.168.1.100', 8001)
client.connect(con_address)
print('已连接服务器')
def send_msg(sock):
while True:
msg = input('客户端输入要发送的消息:')
sock.send(msg.encode('utf-8'))
def recv_msg(sock):
while True:
data = sock.recv(512).decode('utf-8')
if len(data) == 0:
break
print('\n收到了服务器端的消息:', data)
Thread(target=send_msg, args=(client,)).start()
Thread(target=recv_msg, args=(client,)).start()
s
from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
serversocket = socket(AF_INET, SOCK_STREAM)
serversocket.bind(('', 8001))
serversocket.listen()
def recv_data(sock):
while True:
data = sock.recv(512).decode('utf-8')
if len(data) == 0:
break
print('\n客户端说:{}'.format(data))
def send_data(sock):
while True:
msg = input('输入回话:')
sock.send(msg.encode('utf-8'))
while True:
sock, addr = serversocket.accept()
print('已连接', addr)
recv_thread = Thread(target=recv_data, args=(sock,))
send_thread = Thread(target=send_data, args=(sock,))
recv_thread.start()
send_thread.start()
4
c
from socket import socket, AF_INET, SOCK_STREAM
clientsocket = socket(AF_INET, SOCK_STREAM)
clientsocket.connect(('192.168.1.100', 8009))
with open('./植物精灵2.jpg', 'wb') as ws:
while True:
data = clientsocket.recv(1024)
if len(data) == 0:
break
ws.write(data)
print('下载成功!')
clientsocket.close()
s
from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
serversocket = socket(AF_INET, SOCK_STREAM)
serversocket.bind(('', 8009))
serversocket.listen()
def download_file(sock):
with open('植物精灵.jpg', 'rb') as rs:
content = rs.read()
try:
sock.send(content)
except:
print('客户端下载失败!')
else:
print('下载成功!')
finally:
sock.close()
while True:
sock, addr = serversocket.accept()
print('{}连接服务器了'.format(addr[0]))
Thread(target=download_file, args=(sock,)).start()
b/s : 浏览器/服务器
from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
import re
server_socket = socket(AF_INET, SOCK_STREAM)
server_socket.bind(('', 8080))
server_socket.listen()
def show(sock):
print(sock)
data = sock.recv(1024).decode('utf-8')
path = re.match(r'GET (.+?) HTTP/1.1', data).group(1)
print(path)
if path == '/':
res_line = 'HTTP/1.1 200 OK\r\n'
res_header = 'Content-Type: text/html;charset=UTF-8\r\nServer:myserver\r\n\r\n'
res_body = '<div style="width:200px;border:1px solid red">hello!大家好!</div><img src="zwjl.jpg"/>'
response = res_line + res_header + res_body
sock.send(response.encode('utf-8'))
sock.close()
else:
if path.endswith("jpg"):
path1 = path[1:]
with open(path1, 'rb') as rs:
content = rs.read()
res_line = 'HTTP/1.1 200 OK\r\n'
res_header = 'Content-Type: image/jpg\r\nServer:myserver\r\n\r\n'
response = (res_line + res_header).encode('utf-8') + content
sock.send(response)
sock.close()
while True:
sock, addr = server_socket.accept()
print('{}连接服务器了'.format(addr[0]))
Thread(target=show, args=(sock,)).start()