socket

socket

1,基于tcp的socket服务端和客户端
2,加入连接循环
3,加入通信循环
4,基于UDP协议的服务端与客户端
​
c:client
b: browser
​

 

1,基于tcp的socket服务端和客户端

服务端
​
import socket
(内置模块)
#第一个socket是模块名,第二个socket是类名
server = socket.socket(family = socket.AF_INET,type = socket.SOCK_STREAM)
​
#不传就代表tcp协议
server = socket.socket()
#绑定监听地址(bind)绑定的意思
server.bind(('127.0.0.1',8080))
​
#listen,监听,半连接池。强调:不是同时服务5个,而是一个个的来连接池的意思是排队的地方
server.listen(5)
​
#接受消息
#sock:当前连接对象,addr:客户端地址 IP + port(端口)
sock,addr = server.accept()
print(sock)
print(addr)
#1024   bytes
data = sock.recv(1024)
print(data)
​
sock.send(data.upper())
​
sock.close()#当前连接断
​
server.close#整个服务器断了
​
​
​
​
客户端
​
import socket
​
client = socket.socket()
​
client.connect(('127.0.0.1',8080))
​
client.send(b'sb')
​
​
#接受服务端返回的结果
data = sock.recv(1024)
client.close()
​
​
​
第二版本:
​
​
import socket
(内置模块)
#第一个socket是模块名,第二个socket是类名
server = socket.socket(family = socket.AF_INET,type = socket.SOCK_STREAM)
​
#不传就代表tcp协议
server = socket.socket()
#绑定监听地址(bind)监听的意思
server.bind(('127.0.0.1',8080))
​
#listen监听,半连接池。强调:不是同时服务5个,而是一个个的来连接池的意思是排队的地方
server.listen(5)
​
while True:
   #接受消息
   #sock:当前连接对象,addr:客户端地址 IP + port(端口)
   sock,addr = server.accept()
   print(sock)
   print(addr)
   
   #连接通信循环
   while True:
       try:
           #1024   bytes
           data = sock.recv(1024)
           if len(data) == 0:
               break
           print(data)
​
           sock.send(data.upper())
       except Exception as e:
           print(e)
           break
​
   sock.close()#当前连接断
​
server.close#整个服务器断了
​
​
​
import socket
​
client = socket.socket()
​
client.connect(('127.0.0.1',8080))
​
while True:
   input_data = print('请输入传输的数据:(q to quit)').strip()
   
   if input_data:continue
   
   if input_data
   
   client.send(input_data.encode('utf-8'))
​
   #接受服务端返回的结果
   data = sock.recv(1024)
   print(data)
client.close()
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​

基于udp的socket服务端和客户端

 

import socket
# SOCK_DGRAM udp协议服务端
# SOCK_STREAM tcp协议服务端
server = socket.socket(type.socket.SOCK_DGRAM)
​
server.bind(('127.0.0.1',8080))
​
data,client_addr = server.recvfrom(1024)
​
print(data)
print(cilent_addr)
​
​
​
客户端:
import socket
​
cilent = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
​
while True:
   msg = input('>>:').strip()
   client.sendto(msg.encode('utf-8'), )
​
​
​
​
​
​
​
​
​

 

 

进程的概念

进程是系统进行资源分配和调度的基本单位

程序和进程:

程序是静态的,没有生命周期的

进程是动态的,是有生命周期的

协程

进程是操作系统分配资源的基本单位,

 

posted @ 2021-07-19 22:58  旧梦难圆  阅读(257)  评论(0)    收藏  举报