首页 > 其他 > 详细

网络编程

时间:2017-08-20 23:42:32      阅读:257      评论:0      收藏:0      [点我收藏+]

osi模型

学习socket需要了解一些网络知识,其中osi模型为基础~~

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议

技术分享

理解网络之中的TCP通信之三次握手四次挥手

技术分享

交互

通过使用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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!