• 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()
  • 相关阅读:
    桥接模式
    单例模式
    SpringAOP aspectJ ProceedingJoinPoint 获取当前方法
    springMVC实现文件下载
    JAVA的变量初始化类成员变量和局部变量区别
    JAVA枚举类型的应用
    linux下svn命令大全
    转:shell脚本的一些注意事项
    转: linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)
    TCP三次握手/四次挥手详解
  • 原文地址:https://www.cnblogs.com/oleli/p/5313806.html
Copyright © 2020-2023  润新知