1网络通信
Internet上的每台主机(Host)都有一个唯一的IP地址。IP协议就是使用这个地址在主机之间传递信息,这是Internet 能够运行的基础
计算机与计算机通信会用到通信协议
通信协议,有很多下面只说俩种经常用的:
tcp: 可靠的,有状态的,长连接的协议,想打电话一样
udp:不可靠,无连接,像发短信一样,发送的包的顺序要有编号
socket(套接字)
应用程序通常通过套接字向网络发出请求或应答网络网络请求,让计算机间的进程可以进行通讯也就是进行数据通信(通过流)
服务器端常用的soket方法
S.bind()绑定地址
S.listen()tcp监听
S.accept()接收客户端
客户端常用soket方法
S.connect()链接tcp服务器
s.recv()接收tcp数据
S.send()发送tcp数据
S.sendall()完整发送tcp数据
S.recvfrom()接收udp数据
S.sendto()发送udp数据
S.close()关闭套接字
tcp一对一服务器通信案例:
服务器代码:
import socket
import threading
serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serversocket.bind(("192.168.1.158",9999))#绑定服务地址和端口号
print("服务器已等待")
serversocket.listen(5)#最多同时接收五个客户端
print("最多同时接收五个客户端")
c=serversocket.accept()#接收客户端的链接。c是元组,表示得到的客户端的地址和端口
print("正在等待客户端")
def myrerv(c):
while True:
msg=c[0].recv(1024)#接收消息
print(msg.decode())
threading._start_new_thread(myrerv,(c,))
def myinput():
while True:
msg=input()
c[0].send(msg.encode())
threading._start_new_thread(myinput())
客户端代码:
import socket
import threading
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("192.168.1.158",9999))
print("客户端已连接")
def myrerv(c):
while True:
msg=c.recv(1024)#接收消息
print(msg.decode())
threading._start_new_thread(myrerv,(client,))
def myinput():
while True:
msg=input()
client.send(msg.encode())
threading._start_new_thread(myinput())
上面是1对1可以通信的代码 下面为1对多个通信代码 客户端不变
群聊服务器代码:
import socket
import threading
serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serversocket.bind(("192.168.1.158",9999))#绑定服务地址和端口号
print("服务器已等待")
serversocket.listen(5)#最多同时接收五个客户端
msg=None
lock=threading.Lock()
mythread=threading.Condition(lock)
def server_recv(c,a):
global msg
while True:
mystr=c.recv(1024)
mythread.acquire()#线程同步
msg = str(a) + mystr.decode()
print(msg)
mythread.notify_all()
mythread.release()
def server_send(c,a):
global msg
while True:
mythread.acquire()
mythread.wait()
mythread.release()
c.send(msg.encode())
print(msg)
while True:
c,a=serversocket.accept()
threading._start_new_thread(server_recv,(c,a))
threading._start_new_thread(server_send,(c,a))
2 数据库
数据库的基本概念:
数据库的用处:存储大量数据方便检索和访问
保持数据信息的一致,完整
共享和安全
通过组合分析,产生新的有用信息
存储数据的形式是表格形式存储的
数据库就是数据的仓库
数据库中包含表,关系以及操作对象
数据库存在表中
数据库管理系统 DBMS
数据库的操作
1 检索数据 2 插入数据 3更新数据 4删除数据