学习socket需要了解一些网络知识,其中osi模型为基础~~
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议
通过使用python的socket模块实现简单的客户端与服务端的交互
#服务端,我们把网络交互看作是打电话 import socket #买手机 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#socket.AF_INET基于网络的套接字,sock_stream流式套接字 tcp,sock_SOCK_DGRAM 数据报协议 utp #插卡 phone.bind((‘127.0.0.1‘,8080))#唯一标识软件up+端口 #开机 phone.listen(5)#监听,由于单线程会有1个正常通信,最大5个半连接 #等电话连接 while True: conn,client_addr = phone.accept()#接收 print(conn,client_addr) while True: try:#当客户端当方面断开连接时为避免服务端异常报错使用异常处理 #基于建立的连接,收发消息 client_data = conn.recv(1024) print(client_data) if not client_data:break#不能为空,收到空服务端不会返回消息 conn.send(client_data.upper()) except Exception: break #挂电话 conn.close() #关机 phone.close()
#客户端 import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#sock_stream流式套接字 tcp,sock_SOCK_DGRAM 数据报协议 utp phone.connect((‘127.0.0.1‘,8080)) while True: msg = input(‘>>>‘).strip() if not msg:continue phone.send(msg.encode(‘utf-8‘)) server_data = phone.recv(1024) print(server_data.decode(‘utf-8‘)) phone.close()
更新ing
原文:http://www.cnblogs.com/kunixiwa/p/7401821.html