zoukankan      html  css  js  c++  java
  • socket语法

    python版本为3.5.X

    socket--Low-level networking interface

    This module provides access to the BSD socket interface.

    1.创建socket实例:

         import socket

         sk = socket.socket()

        对象sk常用的方法如下:

         sk.bind(address)  :将套接字绑定到地址,地址的格式取决于地址族,在AF_INET下,以元组形式表示('ip_address',port) 如:('192.168.1.254',8888)。[服务端使用]

         sk.listen(backlog) :开始监听传入的连接,backlog指定队列中最大连接数,超过则拒绝连接。[服务端使用]

         sk.setblocking(pool):是否阻塞,默认为True ,如果设为False,那么accept和recv时一旦无数据时,则报错。

         sk.accept()            :接受连接并返回(conn,addr),基中conn为套接字对象,可以用来发送和接收数据如:conn.recv(1024),conn.sendall(string) ,

                                       addr为客户端的地址  [服务端使用]

          sk.connect(address):连接到address处的套接字,address一般为元组。

          sk.close(): 关闭套接字

          sk.recv(1024):最大接收1024字节的数据,接收数据为二进制。

          sk.send(data)

          sk.sendall(data):发送的数据为二进制; sendall方法是不停的调用send方法,直到数据发送完为止。

          sk.settimeout(timeout):  设置套接字操作的超时期,timeout为一个浮点数,单位是秒,如果为None则没有超时期。一般超时期应该在刚创建套接字时设置,用于连接操作(如client连接最多等待几秒)。

          sk.getpeername():返回连接套接字的远程地址,通常为元组(ipaddr,port)。

          sk.getsockname():返回套接字自己的地址,通常为一个元组(ipaddr,port)。

    2. 示例一个简单的ftp:

    服务端:

     1 import socket
     2 ip_addr = ('192.168.1.254',8888)
     3 sk = socket.socket()
     4 sk.bind(ip_addr)
     5 sk.listen(5) 
     6 
     7 #循环处理连接
     8 while True:
     9     conn,addr = sk.accept()
    10     data = conn.recv(1024)               #设定一次接收1024字节,数据为二进制
    11     print(str(data,encoding='utf8'))    #将二进制数据转化为字符串并打印
    12     conn.sendall(bytes('hello',encoding='utf8'))   #发送数据到客户端

    客户端:

     1 import socket
     2 ip_addr = ('192.168.1.254',8888)
     3 sk = socket.socket()  #创建socket套接字对象
     4 sk.connect(ip_addr)   #连接服务端
     5 
     6 while True:
     7     sk.sendall(bytes('hello world',encoding='utf8'))
     8     data = sk.recv(1024)
     9     print(str(data,encoding='utf8'))
    10 sk.close()
  • 相关阅读:
    ubuntu远程windows桌面
    spring boot 给返回值加状态 BaseData
    spring boot 拦截异常 统一处理
    IntelliJ IDEA spring boot 远程Ddbug调试
    IntelliJ IDEA 常用插件
    spring boot 请求地址带有.json 兼容处理
    spring boot 接口返回值去掉为null的字段
    spring boot 集成disconf
    Spring boot 自定义拦截器
    Linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/oleli/p/5313806.html
Copyright © 2011-2022 走看看