网络编程

 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

数据库的操作

检索数据  插入数据 3更新数据 4删除数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值