Python—socket库建议收藏

为方便以后查询和学习,特从常用库函数和示例来总结socket库1.术语family:AF_INETsocktype:SOCK_STREAM或SOCK_DGRAMprotocol:IPPROT

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

  为方便以后查询和学习,特从常用库函数和示例来总结socket库

  Python---socket库建议收藏

1. 术语

family:AF_INET

socktype:SOCK_STREAM或SOCK_DGRAM

protocol:IPPROTO_TCP

2. 常用库函数

(1). socket()

  #创建socket

(2). gethostname()

  #返回主机名 

  >>>>USER-20170820ND

(3). gethostbyname(hostname)

  #根据主机名得到IP

   >>>>192.168.3.8

(4). gethostbyname_ex(hostname)

  #根据主机名返回一个三元组(hostname, aliaslist, ipaddrlist)

  >>>> (‘USER-20170820ND’, [], [‘192.168.3.8’])

(5). gethostbyaddr(ip_addr)

  #返回一个三元组(hostname, aliaslist, ipaddrlist)

  >>>> (‘USER-20170820ND.ws325’, [], [‘192.168.3.8’])

(6). getservbyname(servicename[, protocolname])

  #返回端口号

  port = socket.getservbyname(“http”, “tcp”)

  >>>> 80

(7). getprotobyname()

  ppp = socket.getprotobyname(“tcp”)  

  >>>> 6

(8). getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)

(9). ntohs() ntohl()

  #将网络字节序转换为主机字节序

(10). htons() htonl()

  #将主机字节序转换为网络字节序

(11). inet_aton()

(12). inet_ntoa()

(13). getdefaulttimeout()

  #得到设置的时间超时

(14). setdefaulttimeout()

  #设置时间超时

 3. Serve和Client通讯示例  

Python---socket库建议收藏Serve.py
Python---socket库建议收藏

#coding:UTF-8

import socket  #导入socket库

class Serve:
    'Socket Serve!!!'

    #设置退出条件
    stop = False

    def __init__(self):
        hostname = socket.gethostname()
        print (hostname)
        self.ip = socket.gethostbyname(hostname)
        self.port = 1122
        self.addr = (self.ip,self.port)
        print (self.addr)

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

        s.bind(self.addr)
        s.listen(5)

        while not self.stop:
            print('等待接入,侦听端口:%s -- %d' % (self.ip, self.port))
            clientsocket, clientaddr = s.accept()
            print ("接入成功:%s--%d" %(clientaddr[0], clientaddr[1]))

            while True:
                
                try:
                    buff = clientsocket.recv(1024)
                    print ("接收数据:%s" %(buff))
                except:
                    clientsocket.close()
                    break;
                if not buff:
                    print ("not buff!!!")
                    break;

                self.stop=(buff.decode('utf8').upper()=="QUIT")
                if self.stop:
                    print ("响应退出命令!")
                    break
            clientsocket.close()
        s.close()    
        
             
if __name__ == "__main__":
    serve = Serve()
    

View Code

Python---socket库建议收藏Client.py
Python---socket库建议收藏

#coding:UTF-8

# client
import socket

class Client:

    'Socket Client!'
    
    def __init__(self, ip, port):
        self.ip = ip
        self.port = port
        self.addr = (self.ip, self.port)
        print (self.addr)

    def connect(self):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        print (s)
        s.connect(self.addr)

        return s
        #Client.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        #print (Client.s)
        #Client.s.connect(self.addr)

if __name__ == "__main__":
    ip = "192.168.3.8"
    port = 1122
    client = Client(ip, port)
    print (client.__doc__)   

    client.connect()

    while True:
        data = input(">")
        if not data:
            break;
        sock.send(data.encode("utf8"))
        print ("发送信息:%s" %(data))
        if data.upper() == "QUIT":
            break;
    sock.close()        
        
            
    
        

View Code

  3. udp示例

Python---socket库建议收藏
Python---socket库建议收藏

#coding=utf-8

from socket import *
from time import strftime

ip_port=('127.0.0.1',9000)
bufsize=1024

tcp_server=socket(AF_INET,SOCK_DGRAM)
tcp_server.bind(ip_port)

while True:
    msg,addr=tcp_server.recvfrom(bufsize)
    print('===>',msg)
    
    if not msg:
        time_fmt='%Y-%m-%d %X'
    else:
        time_fmt=msg.decode('utf-8')
    back_msg=strftime(time_fmt)

    tcp_server.sendto(back_msg.encode('utf-8'),addr)

tcp_server.close()

View Code

Python---socket库建议收藏
Python---socket库建议收藏

#coding=utf-8

from socket import *
ip_port=('127.0.0.1',9000)
bufsize=1024

tcp_client=socket(AF_INET,SOCK_DGRAM)

while True:
    msg=input('请输入时间格式(例%Y %m %d)>>: ').strip()
    tcp_client.sendto(msg.encode('utf-8'),ip_port)

    data=tcp_client.recv(bufsize)

    print(data.decode('utf-8'))

tcp_client.close()

View Code

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120224.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 高通骁龙430系列-MSM8937 ( Cortex-A53架构)「建议收藏」

    高通骁龙430系列-MSM8937 ( Cortex-A53架构)「建议收藏」核心板特性产品尺寸小,便于客户集成,减少产品体积;支持4GLTE超高速上网,单板兼容移动/联通/电信2G/3G/4G;丰富的接口配置,满足大多数客户需求;高通骁龙8937(高通骁龙430系列)产品首款核心板产品;产品单面布板,可有效降低产品厚度;产品质量稳定可靠;提高开发效率。客户系统架构无需从零开始;降低开发难度。客户重点放在应用方案开发上,不必关注无线网络方案;增强可维护性。通过核心板的更迭…

    2022年4月19日
    736
  • 中国Web应用程序防火墙(WAF)市场现状研究分析与发展前景预测报告「建议收藏」

    中国Web应用程序防火墙(WAF)市场现状研究分析与发展前景预测报告「建议收藏」本文研究中国市场Web应用程序防火墙(WAF)现状及未来发展趋势,侧重分析在中国市场扮演重要角色的企业,重点呈现这些企业在中国市场的Web应用程序防火墙(WAF)收入、市场份额、市场定位、发展计划、产品及服务等。历史数据为2017至2021年,预测数据为2022至2028年。

    2022年5月5日
    95
  • 树莓派能做什么呢?如何使用树莓派

    树莓派能做什么呢?如何使用树莓派我们知道树莓派是最常用的开发板,树莓派受欢迎的原因之一在于树莓派的功能非常全面,不论是做视频播放、音频播放等功能,树莓派都能派上用场。为增进大家对树莓派的认识,本文将带大家了解一下曾有人用树莓派做了什么。如果你对树莓派具有兴趣,不妨继续往下阅读哦。1、无线热点这大概是地球人拿来干的最多的一件——插上网线和USB无线网卡,配置之后就可以作为一个无线热点。2、机械假肢MITMediaLab的研究员把它作为机械假肢的控制器。3、简易自制笔记本把树莓派跟LCD液晶面板连上,再加上鼠标键盘

    2022年6月9日
    26
  • 使用fiddler对手机APP进行抓包

    使用fiddler对手机APP进行抓包在做手机或移动端APP的接口测试时,需要从开发人员那里获取接口文档,接口文档应该包括完整的功能接口、接口请求方式、接口请求URL、接口请求参数、接口返回参数。如果当前项目没有接口文档,则可以使用fiddler对APP进行抓包确认。在手机上对APP进行操作,然后在Fiddler中可以抓取对应的网络交互信息(一个功能中可能设计多个接口的交互)。在抓取的信息中可以看到接口请求方式、接口请求URL、接口请

    2022年5月16日
    82
  • setsockopt()使用方法(參数具体说明)

    setsockopt()使用方法(參数具体说明)

    2021年12月7日
    39
  • C# ViewState

    C# ViewStateViewState用于维护页面的UI状态,Web是没有状态的,ASP.NET页面也没有状态,它们在到服务器的每个往返过程中被实例化、执行、呈现和处理。作为Web开发人员,您可以使用众所周知的技术(如以会话状态将状态存储在服务器上,或将页面回传到自身)来添加状态。一、ViewState的原理浏览器请求Default.aspx页面在服务器端发现创建的ViewState这个时候会自动创建一…

    2022年7月21日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号