python网络编程总结
1.socket简介
TCP是基于链接的,必须先启动服务器,然后再启动客户端去链接服务端
服务端
import socket
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#买手机
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #可以多次启动
#执行多次的时候会报错,那么怎么办呢、?就在绑卡前面加上上面那句setsockopt方法就ok了
phone.bind(('192.168.20.44',8080))#绑定手机卡(ip,端口)
# 端口号在1024以前的是系统用的,1024以后的都是你自己写的程序去定义的端口
print('starting run......')
phone.listen(5) #开机 5代表的是最多挂起5个,也可以好多个
while True: #链接循环
coon,client_addr=phone.accept()#等待接电话,(coon是建立的链接,客户端的ip和端口号组成的元组)
print(coon,client_addr)
#收发消息
while True: #通信循环
try: #如果不加try...except ,就会报错,因为它不知道你什么时候断开链接的,服务器还以为你在运行
data = coon.recv(1024) #收了1024个字节的消息
print('client data 收到消息:%s'%data.decode('utf-8'))
coon.send(data.upper()) #发消息
except Exception: #因为你不知道客户端什么时候断开链接,
break
coon.close() #挂电话
phone.close() #关机
# 处理逻辑错误的两种方式:
# if 判断
# try...except 异常处理
# 异常处理
# 当你知道直接错误的条件时就用if判断了
# 当程序错误一定发生,但是你又预知不了它出错的条件是什么的时候,就用try...except
服务端