python TCP

来源:互联网 发布:dns反向解析配置 linux 编辑:程序博客网 时间:2024/06/07 00:47
网络:
    要解决哪些问题
    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")
原创粉丝点击