iaap =  ( "127.0.0.1" ,  8002 ) 
"""
CS架构(client\server)最基本知识
"""
import socket
from myprofile_1 import iaap# 1.创建socket对象(下面两个参数不写默认也是它俩)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # socket.SOCK_STREAM 流式协议# 2.绑定地址
server.bind(iaap)# 3.监听连接请求
server.listen(5)  # 5 --> 半连接池大小# 4.取出连接请求,开始服务
conn, addr = server.accept()# 5.数据传输
date = conn.recv(1024)
date = date.decode("utf-8")
print(date)# 6.结束服务
conn.close()# 7.关闭服务器(可选)
server.close()
"""
CS架构(client\server)最基本知识
"""
import socket
from myprofile_1 import iaap# 1.创建socket对象
client = socket.socket()# 2.建立连接
client.connect(iaap)# 3.传输数据
msg = input("请输入>>>")
client.send(msg.encode("utf-8"))# 4.关闭连接(客户端的最后必须是关闭连接,从而释放客户端设备的资源)
client.close()  # 所以必须要写,这行代码对应的是服务端的conn.close()
iaap = ("127.0.0.1", 8004)
"""
CS架构升级--连接循环
""" 
import  socket
import  timefrom  myprofile_2 import  iaap
sk =  socket. socket( ) 
sk. bind( iaap) 
sk. listen( 5 )   
print ( "正在等待客户端连接..." ) 
while  True : conn,  addr =  sk. accept( ) print ( "成功连接客户端" ) while  True : try : date =  conn. recv( 1024 ) except : break if  not  date: break conn. send( date. upper( ) ) print ( "正在关闭连接..." ) time. sleep( 1.1 ) conn. close( ) print ( "连接已关闭" ) 
"""
CS架构升级--连接循环
""" 
import  socket
from  myprofile_2 import  iaap
sk =  socket. socket( ) 
sk. connect( iaap) 
while  True : msg =  input ( "请输入>>>" ) . strip( ) if  not  msg:   continue if  msg ==  "Q"  or  msg ==  "q" :   break sk. send( msg. encode( "utf-8" ) ) date =  sk. recv( 1024 ) print ( date. decode( "utf-8" ) ) 
sk. close( ) 
iaap =  ( "127.0.0.1" ,  8010 ) 
"""
利用 socketserver 实现并发
""" 
import  socketserver
from  myprofile_1 import  iaapclass  RequestHandle ( socketserver. BaseRequestHandler) : def  handle ( self) : print ( self. request)   print ( self. client_address) while  True : try : date =  self. request. recv( 1024 ) except : break if  not  date: break self. request. send( date. upper( ) ) print ( ) self. request. close( ) 
sk =  socketserver. ThreadingTCPServer( iaap,  RequestHandle) 
sk. serve_forever( ) 
"""
利用 socketserver 实现并发
""" 
import  socket
from  myprofile_1 import  iaap
sk =  socket. socket( ) 
sk. connect( iaap) 
while  True : msg =  input ( "请输入>>>" ) . strip( ) if  not  msg: continue if  msg ==  "Q"  or  msg ==  "q" : break sk. send( msg. encode( "utf-8" ) ) date =  sk. recv( 1024 ) print ( date. decode( "utf-8" ) ) 
sk. close( ) 
iaap =  ( "127.0.0.1" ,  8033 ) 
"""使用"进程"实现并发效果""" 
import  socket
from  multiprocessing import  Process
from  myprofile_2 import  iaapdef  task ( conn,  addr) : ip,  port =  addrprint ( f"成功连接客户端>>>\nIP>>> { ip} \n端口>>> { port} " ) while  True : try : date =  conn. recv( 1024 ) except : break if  not  date: break conn. send( date. upper( ) ) conn. close( ) if  __name__ ==  '__main__' : sk =  socket. socket( ) sk. bind( iaap) sk. listen( 5 ) while  True : conn,  addr =  sk. accept( ) p =  Process( target= task,  args= ( conn,  addr) ) p. start( ) 
"""使用"进程"实现并发效果""" 
import  socket
from  myprofile_2 import  iaapsk =  socket. socket( ) 
sk. connect( iaap) 
while  True : msg =  input ( "请输入>>>" ) . strip( ) if  not  msg: break if  msg ==  "q"  or  msg ==  "Q" : break sk. send( msg. encode( "utf-8" ) ) date =  sk. recv( 1024 ) print ( date. decode( "utf-8" ) ) 
sk. close( ) 
iaap =  ( "127.0.0.1" ,  8001 ) 
"""
使用线程实现并发效果
""" 
import  socket
from  threading import  Thread
from  myprofile import  iaapdef  task ( conn,  addr) : ip,  port =  addrprint ( f"客户端>>>IP: { ip} <<< >>>端口: { port} <<<\n连接成功\n" ) while  True : try : date =  conn. recv( 1024 ) except : break if  not  date: break conn. send( date. upper( ) ) print ( f"客户端>>>IP: { ip} <<< >>>端口: { port} <<<正在关闭连接..." ) conn. close( ) print ( "连接已断开" ) if  __name__ ==  '__main__' : sk =  socket. socket( ) sk. bind( iaap) sk. listen( 5 ) while  True : coon,  addr =  sk. accept( ) t =  Thread( target= task,  args= ( coon,  addr) ) t. start( ) 
"""
使用线程实现并发效果
""" import  socket
from  myprofile import  iaap
sk =  socket. socket( ) 
sk. connect( iaap) 
while  True : msg =  input ( "请输入>>>" ) . strip( ) if  not  msg: continue if  msg ==  "Q"  or  msg ==  "q" : break sk. send( msg. encode( "utf-8" ) ) date =  sk. recv( 1024 ) print ( date. decode( "utf-8" ) ) 
print ( "正在关闭连接..." ) 
sk. close( ) 
print ( "连接已断开" ) 
iaap =  ( "127.0.0.1" ,  8002 ) 
"""
udp协议下的套接字udp特点:
1.udp传输不可靠
2.udp不需要连接
""" 
import  socket
from  myprofile import  iaap
sk =  socket. socket( socket. AF_INET,  socket. SOCK_DGRAM)   
sk. bind( iaap) 
while  True : date,  addr =  sk. recvfrom( 1024 ) sk. sendto( date. upper( ) ,  addr) 
"""
udp协议下的套接字udp特点:
1.udp传输不可靠
2.udp不需要连接
""" 
import  socket
from  myprofile import  iaap
sk =  socket. socket( socket. AF_INET,  socket. SOCK_DGRAM) 
while  True : msg =  input ( "请输入>>>" ) . strip( )   if  not  msg: continue if  msg ==  "q"  or  msg ==  "Q" : break sk. sendto( msg. encode( "utf-8" ) ,  iaap) date,  addr =  sk. recvfrom( 1024 ) print ( date. decode( "utf-8" ) ) 
print ( "正在断开连接..." ) 
sk. close( ) 
print ( "已断开" ) 
iaap =  ( "127.0.0.1" ,  8000 ) 
"""
利用 socketserver 实现并发
""" 
import  socketserver
import  timefrom  myprofile import  iaapclass  RequestHandle ( socketserver. BaseRequestHandler) : def  handle ( self) : print ( f"客户端发来的数据>>> { self. request[ 0 ] } " ) time. sleep( 3 ) self. request[ 1 ] . sendto( self. request[ 0 ] . upper( ) ,  self. client_address) 
sk =  socketserver. ThreadingUDPServer( iaap,  RequestHandle) 
sk. serve_forever( ) 
"""
利用 socketserver 实现并发
""" import  socket
from  myprofile import  iaap
sk =  socket. socket( socket. AF_INET,  socket. SOCK_DGRAM) 
while  True : msg =  input ( "请输入>>>" ) . strip( ) if  not  msg: continue if  msg ==  "q"  or  msg ==  "Q" : break sk. sendto( msg. encode( "utf-8" ) ,  iaap) date,  addr =  sk. recvfrom( 1024 ) print ( date. decode( "utf-8" ) ) 
sk. close( )