python TCP

网络:
    要解决哪些问题
    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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值