zoukankan      html  css  js  c++  java
  • socket模块

    1.socket模块

    socket是Python中的一种数据结构====>套接字

    socket模块是用于网络通信的模块,主要是用于tcp的server端和client端的搭建,以及udp的server端和client端的搭建,在搭建服务端的时候,要注意的是:

    server端: 

    ip地址:

    几个常见的ip地址的区别:

    1.   127.0.0.1用于测试,这个是回环地址,采用该ip后不会走交换机,仅限在本机

    2.    0.0.0.0的作用在不同的机器中代表的含义不同,具体的如下:

    • 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么   通过两个ip地址都能够访问该服务。
    • IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。 
    • 在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。         

    3.    localhost一般是等同于127.0.0.1,不过载Ubuntu上忽悠区别

    一般我们在服务端定义一个变量时要注意的是ip地址,测试使用127.0.0.1,ipv4的ip地址,0.0.0.0,localhost都可以,除了localhost和127.0.0.1不能用于局域网内的通信,其余两个都可以实现

    端口(port):

    端口:可以浅显的理解为操作系统给予,通过端口号,可以确定某一个应用程序,应用程序间的通信时通过端口和ip实现的

    一共有65535个,8000以前的端口是留给操作系统备用的

    在服务的开一个端口的话,客户端如果要连接的话一定要端口一致才能通信

    缓冲(buffersize):

    这里是设置缓冲接受多少字节

    下面是TCP_Server的代码:

     1 from socket import *
     2 from time import ctime
     3 
     4 # 主机常量
     5 HOST = ''
     6 PORT = 9999
     7 BUFFERSIZE = 1024
     8 ADDR = (HOST, PORT)
     9 
    10 # 实例化对象,绑定地址并启用监听
    11 tcpSerSoc = socket()
    12 tcpSerSoc.bind(ADDR)
    13 tcpSerSoc.listen()
    14 
    15 conn, addr = tcpSerSoc.accept()
    16 ret = conn.recv(BUFFERSIZE).decode('utf-8')
    17 
    18 print(ret)
    19 
    20 t = ctime()
    21 conn.send(t.encode('utf-8'))
    22 
    23 conn.close()
    24 
    25 tcpSerSoc.close()
    tcpSerSoc

    client端:

    client端要注意的是要连接的服务端的ip地址和端口,在Python3中发送的内容要以bytes类型发送

    下边是TCP_Client端的代码:

     1 from socket import *
     2 from time import ctime
     3 
     4 # 主机常量
     5 HOST = 'localhost'
     6 PORT = 9999
     7 BUFFERSIZE = 1024
     8 ADDR = (HOST, PORT)
     9 
    10 tcpCliSoc = socket()
    11 tcpCliSoc.connect(ADDR)
    12 
    13 tcpCliSoc.send(b'hello')
    14 data = tcpCliSoc.recv(BUFFERSIZE).decode('utf-8')
    15 
    16 print(data)
    17 
    18 tcpCliSoc.close()
    tcpCliSoc

    要运行的话先要开启服务端,在开启客户端

  • 相关阅读:
    HTTP/2之服务器推送(Server Push)最佳实践
    相似人群画像算法
    Linux也有后悔药,五种方案快速恢复你的系统
    IPv6原理、应用与实践
    护航者,腾讯云: 2017年度游戏行业DDoS态势报告—回溯与前瞻
    放大倍数超5万倍的Memcached DDoS反射攻击,怎么破?
    Unity引擎与C#脚本简介
    腾讯云Redis混合存储版重磅推出,万字长文助你破解缓存难题!
    拒绝平庸,以程序员的名义定义新桌面!
    腾讯云EMR大数据实时OLAP分析案例解析
  • 原文地址:https://www.cnblogs.com/linga/p/9362741.html
Copyright © 2011-2022 走看看