zoukankan      html  css  js  c++  java
  • 基于socket构造c/s 架构软件

    1、socket作用

    socket层介于应用层和传输层之间,它起着连接应用层和传输层的功能,同时它能连接应用层和网络层。

    socket把复杂的tcp/ip协议隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket组织数据,以符合指定的协议。

    socket= IP + port +tcp(udp) 

    应用层可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,
    实现数据传输的并发服务。

    2、基于socket构造C/S

    服务端:

     

    步骤
    (1)明确网络通信种类和协议;(2)固定IP和端口;(3)建立半连接池
    (4)等待客户端运行,建立双向链接,(5)收发消息;(6)断开链接,(7)关闭服务端

     

     

    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #网络通信种类,tcp 协议 流式协议
    print(phone)
    phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #重新用端口
    # 本地回环地址,用于测试,只能自己访问
    phone.bind(('127.0.0.1',8080)) #固定IP 端口
    phone.listen(5) #半连接池

    #等待消息
    print('start..')
    while True :
    conn,client_addr=phone.accept() #(三次握手建立双向链接,(客户端的IP,端口)
    print('链接成功') #客户端运行,服务端打印此信息
    print(client_addr)
    #通信
    while True :
    try:
    data=conn.recv(1024) #最大接受的字节数,没有数据会在原地一直等待收,即发送者发送的数据必须大于0bytes
    if len(data)== 0: break #在客户端单方面断开链接,服务端出现收空数据的情况
    conn.send(data.upper()) #发消息
    except ConnectionResetError : #win系统针对于解决客户端不发信息,服务端报错问题
    break
    conn.close()
    phone.close()



    客户端:

    步骤:
    (1)确认网络通信类型和协议 (2)指定服务端的IP和端口 (3)发收消息(4)关闭

    phone = socket .socket (socket .AF_INET ,socket .SOCK_STREAM )
    print(phone)

    phone.connect(('127.0.0.1',8080)) #指定服务端的IP和端口
    while True :
    msg = input('<<<')
    if len(msg) == 0: continue #避免用户发空的情况
    phone.send(bytes(msg,encoding= 'utf-8')) #传输二进制
    data = phone.recv(1024) #收消息
    print(data)

    phone.close()











     

  • 相关阅读:
    Vim直接打开Tampermonkey网址的方法。
    利用 Tampermonkey 和 Surfingkeys 效率操作网页
    tampermonkey利用@require调用本地脚本的方法
    用AutoHotkey一键完成Xmind插入图片等功能
    用AutoHotkey调整Windows音量
    用AutoHotkey重置Excel的Ctrl+Alt+方向键选择的范围
    远程终端协议TELNET
    文件传送协议
    域名系统DNS
    计算机网络运输层习题5-38
  • 原文地址:https://www.cnblogs.com/quqinchao/p/9278382.html
Copyright © 2011-2022 走看看