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  旧梦难圆  阅读(252)  评论(0)    收藏  举报