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

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

  • 相关阅读:
    Android 自定义View (一)
    Java enum的用法详解
    Android Application的使用及其生命周期
    android 支持的语言列表(汇总)
    android 使用String.format("%.2f",67.876)自已定义语言(俄语、西班牙语)会把小数点变为逗号
    TN2151:崩溃报告
    android 各国语言对应的缩写
    uva 1401 dp+Trie
    教你3网页特效免费下载栅极材料必不可少的一步,无需工具
    编译命令行终端 swift
  • 原文地址:https://www.cnblogs.com/linga/p/9362741.html
Copyright © 2011-2022 走看看