存在于传输层与应用层之间的抽象层(从传输层包括传输层以下,都是操作系统帮封装各种head):
1.避免学习各层的接口以及协议的使用,socket已经封装好了所有的接口,直接使用这些接口或者方法即可,使用起来方便,提升开发效率.
2.socket就是一个模块,通过使用学习模块提供的功能,建立客户端与服务端的通信
服务端:
import socket
phone = socket.socket() # 创建socket对象
phone.bind(('127.0.0.1',8888)) #绑定ip地址和端口,括号内为本地回环地址
phone.listen(5) # 监听
conn,addr = phone.accept() # conn为连接服务端与客户端的管道,addr为端口号
client_data = conn.recv(1024)
print(client_data.decode('utf-8'))
to_client = input('>>>')
conn.send(to_client.encode('utf-8'))
conn.close()
phone.close()
客户端:
import socket
phone = socket.socket()
phone.connect(('127.0.0.1',8888))
to_server = input('>>>').strip()
phone.send(to_server.encode('utf-8'))
server_data = phone.recv(1024)
print(server_data.decode('utf-8'))
phone.close()
服务端:
import socket
phone = socket.socket()
phone.bind(('127.0.0.1',8888))
phone.listen(5)
conn,addr = phone.accept()
while 1:
try:
client_data = conn.recv(1024)
if client_data == b'q':
break
print(client_data.decode('utf-8'))
to_client = input('>>>')
conn.send(to_client.encode('utf-8'))
except ConnectionResetError:
break
conn.close()
phone.close()
客户端:
import socket
phone = socket.socket()
phone.connect(('127.0.0.1',8888))
while 1:
to_server = input('>>>').strip()
if to_server.upper() == 'Q':
phone.send('q'.encode('utf-8'))
break
phone.send(to_server.encode('utf-8'))
server_data = phone.recv(1024)
print(server_data.decode('utf-8'))
phone.close()
服务端:
import socket
phone = socket.socket()
phone.bind(('127.0.0.1',8888))
phone.listen(5)
while 1:
conn,addr = phone.accept()
while 1:
try:
client_data = conn.recv(1024)
if client_data == b'q':
break
print(client_data.decode('utf-8'))
to_client = input('>>>')
conn.send(to_client.encode('utf-8'))
except ConnectionResetError:
break
conn.close()
phone.close()
客户端:
import socket
phone = socket.socket()
phone.connect(('127.0.0.1',8888))
while 1:
to_server = input('>>>').strip()
if to_server.upper() == 'Q':
phone.send('q'.encode('utf-8'))
break
phone.send(to_server.encode('utf-8'))
server_data = phone.recv(1024)
print(server_data.decode('utf-8'))
phone.close()
服务端:
import socket
import subprocess
phone = socket.socket()
phone.bind(('127.0.0.1',8848))
phone.listen(5)
conn,addr = phone.accept()
while 1:
try:
client_data=conn.recv(1024)
obj = subprocess.Popen(client_data.decode('utf-8'),
shell = True,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
conn.send(obj.stdout.read()+obj.stderr.read())
except ConnectionResetError :
break
conn.close()
phone.close()
客户端:
import socket
phone = socket.socket()
phone.connect(('127.0.0.1',8848))
while 1:
content = input('输入:')
if content.upper() == 'Q':
break
phone.send(content.encode('utf-8'))
server_data = phone.recv(1024)
print(server_data.decode('gbk'))
phone.close()
原文:https://www.cnblogs.com/wxl1025/p/11197074.html