网络:
要解决哪些问题
tcp udp http ftp pop3 smtp
tcp :可靠,有状态,长连接的协议
主叫方(客户套接字) 被叫方(服务套接字)
udp:不可靠,我连接,
import socket
import threading
#创建服务套接字
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print("建立服务套接字,")
#服务套接字绑定端口号,绑定主机
ss.bind(("0.0.0.0",9999))
print("绑定端口和主机")
ss.listen(5)
#接收客户套接字
print("开始等待客户的请求")
c=ss.accept()#线程阻塞
print("某个客户链接到我了")
#函数线程
def myrevc(c):
while True:
msg=c.recv(1024)#当没消息的时候休息,阻塞
print(msg.decode())
threading._start_new_thread(myrevc,(c[0],))
while True:
msg=input()
c[0].send(msg.encode())
import socket
import threading
#建立客户套接字
c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print("创建客户套接字")
c.connect(("192.168.66.180",9999))#链接对方不成功,抛出异常
print("我已连接到服务")
# c.send("你是鸭嘴吗?".encode())
# msg=c.recv(1024)
# print(msg.decode())
def myrevc(c):
while True:
msg=c.recv(1024)#当没消息的时候休息,阻塞
print(msg.decode())
threading._start_new_thread(myrevc,(c,))
while True:
msg=input()
c.send(msg.encode())
设计多人聊天转发消息的服务
要有两个线程
一个收消息
一个把收到的消息发出去
import socket
import threading
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ss.bind(("0.0.0.0",9999))
ss.listen(10)
msg=None
lock=threading.Lock()
con=threading.Condition(lock)
#接收信息
def server_recv(c,a):
global msg
while True:
str1=c.recv(1024)
con.acquire()
msg=str1
msg=str(a)+str.decode()
con.notify_all()
con.release()
#发送信息
def server_send(c,a):
global msg
while True:
con.acquire()
con.wait()
con.release()
c.send(msg.encode())
while True:
c,a=ss.accept()
threading._start_new_thread(server_recv,(c,a))
threading._start_new_thread(server_send,(c,a))
python简单链接数据库
import pymysql
#主机地址,数据库用户名,密码,数据库名
c=pymysql.connect("localhost","root","root","copys")
#获取游标==statement Preparedstatement
cursor=c.cursor()
# sql='''
# create table student(
# id int auto_increment PRIMARY KEY ,
# name varchar(50),
# age int not NULL
# )
# '''
# cursor.execute(sql)
sql='''
insert into student (name,age)
VALUES ('张三',18)
'''
cursor.execute(sql)
c.commit()
c.rollback()
c.close()
print("insert success")
要解决哪些问题
tcp udp http ftp pop3 smtp
tcp :可靠,有状态,长连接的协议
主叫方(客户套接字) 被叫方(服务套接字)
udp:不可靠,我连接,
import socket
import threading
#创建服务套接字
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print("建立服务套接字,")
#服务套接字绑定端口号,绑定主机
ss.bind(("0.0.0.0",9999))
print("绑定端口和主机")
ss.listen(5)
#接收客户套接字
print("开始等待客户的请求")
c=ss.accept()#线程阻塞
print("某个客户链接到我了")
#函数线程
def myrevc(c):
while True:
msg=c.recv(1024)#当没消息的时候休息,阻塞
print(msg.decode())
threading._start_new_thread(myrevc,(c[0],))
while True:
msg=input()
c[0].send(msg.encode())
import socket
import threading
#建立客户套接字
c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print("创建客户套接字")
c.connect(("192.168.66.180",9999))#链接对方不成功,抛出异常
print("我已连接到服务")
# c.send("你是鸭嘴吗?".encode())
# msg=c.recv(1024)
# print(msg.decode())
def myrevc(c):
while True:
msg=c.recv(1024)#当没消息的时候休息,阻塞
print(msg.decode())
threading._start_new_thread(myrevc,(c,))
while True:
msg=input()
c.send(msg.encode())
设计多人聊天转发消息的服务
要有两个线程
一个收消息
一个把收到的消息发出去
import socket
import threading
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ss.bind(("0.0.0.0",9999))
ss.listen(10)
msg=None
lock=threading.Lock()
con=threading.Condition(lock)
#接收信息
def server_recv(c,a):
global msg
while True:
str1=c.recv(1024)
con.acquire()
msg=str1
msg=str(a)+str.decode()
con.notify_all()
con.release()
#发送信息
def server_send(c,a):
global msg
while True:
con.acquire()
con.wait()
con.release()
c.send(msg.encode())
while True:
c,a=ss.accept()
threading._start_new_thread(server_recv,(c,a))
threading._start_new_thread(server_send,(c,a))
python简单链接数据库
import pymysql
#主机地址,数据库用户名,密码,数据库名
c=pymysql.connect("localhost","root","root","copys")
#获取游标==statement Preparedstatement
cursor=c.cursor()
# sql='''
# create table student(
# id int auto_increment PRIMARY KEY ,
# name varchar(50),
# age int not NULL
# )
# '''
# cursor.execute(sql)
sql='''
insert into student (name,age)
VALUES ('张三',18)
'''
cursor.execute(sql)
c.commit()
c.rollback()
c.close()
print("insert success")