• python socket 基本使用


    socket通常也叫做“套接字”,用于连接server client,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或应答网络请求。

    就像python 处理file一样:

    file是针对某个文件 打开-->读写-->关闭

    socket是针对服务器 客户端进行 打开-->读写-->关闭

    server部分:

    import socket,sys
    server_address=('127.0.0.1', 8000)
    BUF_SIZE=1024
    try:
       server_sk=socket.socket(socket.AF_INET, socket.SOCK_STREAM)     #创建新的socket对象
    except socket.error, msg:
       print "socket create fail, error code:" + str(msg[0]) + 'error message:' + msg[1]
    print 'socket create successfully'
    try:
       server_sk.bind(server_address)                                   #绑定server地址,address取决于地址族,AF_INET以元组表示
    except socket.error, msg:
       print "socket bind address error:" + str(msg[0]) + 'error mssage:' + msg[1]
    print 'socket bind address successfully'
    
    server_sk.listen(5)
    print "listening..."
    
    while True:
       client_sk, client_addr = server_sk.accept()
       print "connected by:", client_addr
       while True:
          data=client_sk.recv(BUF_SIZE)
          print data
          client_sk.sendall(data)
    
    server_sk.close()
    参数一:地址簇
    socket.AF_INET IPv4(默认)
    socket.AF_INET6 IPv6
    参数二:类型
    socket.SOCK_STREAM  流式socket , for TCP (默认)
    socket.SOCK_DGRAM   数据报式socket , for UDP
    Client部分:
    import socket,sys
    server_address=('127.0.0.1', 8000)
    BUF_SIZE=1024
    
    try:
       client_sk=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error, msg:
       print "socket create fail, error code:" + str(msg[0]) + 'error message:' + msg[1]
    
    client_sk.connect(server_address)
    while True:
       data= raw_input('please input your sending message->')
       if not data:
          print "input data cannot be empty, please input again.."
          continue
       client_sk.sendall(data)
       recv_data = client_sk.recv(BUF_SIZE)
       print recv_data
    
    client_sk.close()

    server 输出:

    socket create successfully
    socket bind address successfully
    listening...
    connected by: ('127.0.0.1', 63388)
    aa

    client 输出:

    please input your sending message->aa
    aa
    please input your sending message->

  • 相关阅读:
    修改element ui 默认样式最好的解释
    python全栈开发day92-day96 Vue总结
    跨域资源共享 CORS 详解(转自阮一峰博客)
    Vue axios 返回数据绑定到vue对象问题
    Vue爬坑之路
    input标签checkbox选中触发事件的方法
    python中super的理解(转)
    Django时区的解释
    django 视图函数返回queryset对象或日期对象至浏览器ajax接收的写法
    python全栈开发day87~91-整个流程梳理、CRM功能、知识点梳理
  • 原文地址:https://www.cnblogs.com/nevermore29/p/9592080.html
Copyright © 2020-2023  润新知