zoukankan      html  css  js  c++  java
  • python socket 函数介绍

    socket

    函数原型:socket.socket([family[,type[,proto]]])

    family参数取值(协议族):

      socket.AF_INET        -->ipv4协议

      socket.AF_INET6   -->ipv6协议

    type参数取值:

      SOCK_STREAM         -->tcp协议相互通信在所有数据传送前必须使用connect()来建立连线状态.

      SOCK_DGRAM          -->udp协议相互通信

    sendto

    函数原型:socket.sendto(string,address)

    发送字符创string到address指定的主机。

    string:用来发送的字符创

    address:是一个元组,需要指定ip地址和端口号

    recvfrom

    函数原型:socket.recvfrom(bufsize[,flags])

    用来从网络上接受UDP数据包,并将接受到的数据存放在buffsize定义的内存空间里边,一般不小于1024字节,发送的字节一般都小于1024字节。

    tcp传输实例

    #socket_send.py

    #client

    #!/usr/bin/env python
    #coding:GBK
    import socket
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.sendto('Hello world',('10.74.84.186',9999))
    data = s.recv(1024)
    print 'received sendback:',data
    s.close()

    #socket_recv.py

    #server

    #!/usr/bin/env python
    #coding=GBK
    import socket
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(('',9999))
    s.listen(5)
    clientsock, clientaddr = s.accept()
    data = clientsock.recv(1024)
    print 'received message:',data
    clientsock.send(data + "-收到")
    clientsock.close()

    send端报错

    root@liqian-python:/pythonsamba# python socket_tcp.py
    Traceback (most recent call last):
    File "socket_tcp.py", line 4, in <module>
    s.sendto('Hello world',('10.74.84.186',9999))
    socket.error: [Errno 32] Broken pipe

    原因:SOCK_STREAM是提供双向连续且可信赖的数据流,即TCP,在所有数据传送前必须使用connect()来建立连线状态。

    python代码实现解决方案

    #socket_send.py

    #!/usr/bin/env python
    #coding:GBK
    import socket
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(('10.74.84.186',9999))
    s.send('Hello world')
    data = s.recv(1024)
    print 'received sendback:',data
    s.close()

  • 相关阅读:
    Vs2010程序和数据库打包成安装文件
    转——C# DataGridView控件 动态添加新行
    c# WinForm开发 DataGridView控件的各种操作
    转——使用PowerDesigner画ER图
    C#画图
    DataGridView 取得当前单元格的内容实现模糊查找
    DataGridView 取得或者修改当前单元格的内容
    c# 做了个Form,上面有个Button,如何在Form加载好之后,用代码触发这个Button的Click事件
    一次ORACLE连接报错
    再次学习Django,实现sql的页面显示及条件查询
  • 原文地址:https://www.cnblogs.com/i1991/p/6878762.html
Copyright © 2011-2022 走看看