客户端socket
-
#!/usr/bin/env python3
-
#-*- coding:utf-8 -*-
-
'''
-
'''
-
#导入socket网络编程模块
-
import socket
-
#创建客户端通信对象
-
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
-
#建立客户端与服务器连接,ip+port以数组的方式传入
-
client_socket.connect(('', 80))
-
#执行客户端操作
-
client_socket.send(b'GET / HTTP/1.1\r\nHost: \r\nConnection: close\r\n\r\n')
-
-
#接收数据
-
buffer=[]
-
while True:
-
datarecv=client_socket.recv(1024)
-
if datarecv:
-
buffer.append(datarecv)
-
else:
-
break
-
data = b''.join(buffer)
-
#关闭链接
-
client_socket.close()
-
-
header, html = data.split(b'\r\n\r\n',1)
-
print(header.decode('utf-8'))
-
#数据写入文件
-
with open('sina.html', 'wb') as f:
-
f.write(html)
t@localhost untitled$ python3 socket_client.py
HTTP/1.1 200 OK
Content-Type: text/html
Vary: Accept-Encoding
X-Powered-By: schi_v1.02
Server: nginx
Date: Mon, 09 May 2016 08:26:19 GMT
Last-Modified: Mon, 09 May 2016 08:24:36 GMT
Expires: Mon, 09 May 2016 08:27:19 GMT
Cache-Control: max-age=60
Age: 48
Content-Length: 549273
X-Cache: HIT from localhost
Connection: close
服务端socket
服务端
-
#!/usr/bin/env python3
-
#-*- coding:utf-8 -*-
-
'''
-
'''
-
#导入库
-
import socket, threading, time
-
#创建socket实例
-
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
#绑定监听网卡
-
server_socket.bind(('0.0.0.0', 10086))
-
#监听连接,最大连接数5
-
server_socket.listen(5)
-
print('Wait for connection...')
-
#定义处理函数
-
def tcplink(sock, addr):
-
print('sock:',type(sock))
print('addr:',type(addr))
-
print('Accept new connection from %s:%s' % addr)
-
sock.send(b'Welcome!')
-
while True:
-
data = sock.recv(1024)
-
time.sleep(1)
-
if not data or data.decode(('utf-8')) == 'exit':
-
break
-
sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'))
-
sock.close()
-
print('Connection from %s:%s closed.' % addr )
-
#创建永久循环来接受客户端连接
-
while True:
-
#接受一个新连接
-
sock, addr = server_socket.accept()
-
#创建一个线程处理请求
-
t = threading.Thread(target=tcplink, args=(sock, addr))
-
t.start()
客户端
-
#!/usr/bin/env python3
-
#-*- coding:utf-8 -*-
-
'''
-
'''
-
-
-
import socket
-
socket_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
-
socket_client.connect(('127.0.0.1',10086))
-
print(socket_client.recv(1024).decode('utf-8'))
-
for data in [b'talen',b'eric',b'tom']:
-
socket_client.send(data)
-
print(socket_client.recv(1024).decode('utf-8'))
-
socket_client.send(b'exit')
-
socket_client.close()
print('the connection from %s:%s is closed' % addr) # addr是一个tuple(IP,port),需要两个%s来接受数据。the connection from 127.0.0.1:20481 is closed
t@localhost untitled$ python3 socket_client2.py
Welcome!
Hello, talen!
Hello, eric!
Hello, tom!
参考学习:
阅读(1254) | 评论(0) | 转发(0) |