资讯专栏INFORMATION COLUMN

Python socket编程

MadPecker / 1523人阅读

摘要:提供了两个基本的模块,它提供了标准的。类型套接字格式使用给定的地址族套接字类型协议编号默认为来创建套接字。函数注意点发送数据时,已建立好连接,所以不需要指定地址。是面向无连接,每次发送要指定是发给谁。

Python 提供了两个基本的 socket 模块

Socket,它提供了标准的 BSD Sockets API。

SocketServer,它提供了服务器中心类,可以简化网络服务器的开发。

Socket 类型

套接字格式:
socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。

Socket 函数

注意点:

TCP发送数据时,已建立好TCP连接,所以不需要指定地址。UDP是面向无连接,每次发送要指定是发给谁。

服务端与客户端不能直接发送列表,元组,字典。需要字符串化repr(data)。

Socekt编程思路

TCP服务端:

创建套接字,绑定套接字到本地IP与端口

socket.socket(socket.AF_INET,socket.SOCK_STREAM),s.bind()

开始监听连接

s.listen()

进入循环,不断接受客户端的连接请求

s.accept()

然后接收传来的数据,并发送给对方数据

s.recv() , s.sendall()

传输完毕后,关闭套接字

s.close()

TCP客户端:

创建套接字,连接远端地址

socket.socket(socket.AF_INET,socket.SOCK_STREAM),s.connect()

连接后发送数据和接收数据

s.sendall(), s.recv()

传输完毕后,关闭套接字

s.close()

服务端实例代码
#!/usr/bin/python
import socket   # socket模块
import commands   # 执行系统命令模块
HOST = "192.168.4.37"
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)   # 定义socket类型,网络通信,TCP
s.bind((HOST,PORT))   # 套接字绑定的IP与端口
s.listen(1)         # 开始TCP监听
while 1:
    conn,addr=s.accept()   # 接受TCP连接,并返回新的套接字与IP地址
    print"Connected by",addr    # 输出客户端的IP地址
    while 1:
        data=conn.recv(1024)    # 把接收的数据实例化
        cmd_status,cmd_result = commands.getstatusoutput(data)   # commands.getstatusoutput执行系统命令(即shell命令),返回两个结果,第一个是状态,成功则为0,第二个是执行成功或失败的输出信息
        if len(cmd_result.strip()) ==0:   # 如果输出结果长度为0,则告诉客户端完成。此用法针对于创建文件或目录,创建成功不会有输出信息
            conn.sendall("Done.")
        else:
            conn.sendall(cmd_result)   # 否则就把结果发给对端(即客户端)
conn.close()     # 关闭连接
客户端示例代码
#!/usr/bin/python
import socket
HOST = "192.168.4.37"
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)      # 定义socket类型,网络通信,TCP
s.connect((HOST,PORT))       # 要连接的IP与端口
while 1:
    cmd=raw_input("Please input cmd:")       # 与人交互,输入命令
    s.sendall(cmd)      # 把命令发送给对端
    data=s.recv(1024)     # 把接收的数据定义为变量
    print data         # 输出变量
s.close()   # 关闭连接

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37548.html

相关文章

  • python-socket网络编程

    摘要:网络编程学习本文主要介绍网络通信,以及的通信例子网络通信是嵌套字的意思,可以理解为与们间的在线会话。关于通信可以看这里简单理解多线程下开启一个对于服务端,需要做件事情开启设置配置绑定端口帧监听,收发包多线程关于报错模块提供个函数。 http://homeway.me/ python网络编程学习 本文主要介绍socket网络通信,以及python的socket通信例子 ...

    zero 评论0 收藏0
  • python网络编程

    摘要:在任何类型的通信开始之前,网络应用程序必须创建套接字。基于文件的套接字,家族名又名基于网络的套接字,家族名在和后续的版本中,支持的套接字有,,,。中的网络编程在中主要是用模块来实现基于套接字的网络通信。 python学习记录--网络编程 1、套接字介绍 一台机器上的不同进程之间进行通信可以利用队列,管道等,但是不同机器之间的进程进行通信用队列是不行的,解决这个问题就是网络套接字。 套接...

    xuhong 评论0 收藏0
  • Python Socket 编程示例 Echo Server

    摘要:可以是主机名地址或空字符串。如果传递空字符串,则服务器将接受所有可用接口上的连接。应为之间的整数被保留,它是接受来自客户端连接的端口号,如果端口号,某些系统可能需要超级用户权限。 简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单地回显它...

    leoperfect 评论0 收藏0
  • python socket编程的初探

    摘要:对于网络编程来说,免不了要用到模块。表示另一端的地址。以上主要是针对流数据的编程。对于协议的数据,处理略有不同。通过传入对象调用来监听对象的文件描述符,一旦发现对象就绪,就通知应用程序进行相应的读写操作。 对于python网络编程来说,免不了要用到socket模块。下面分享一下个人对python socket的一些理解。 socket编程步骤 服务端创建一个socket,绑定地址和端...

    stormgens 评论0 收藏0
  • Python 网络编程之 UDP 协议

    摘要:创建创建通信接受套接字的数据,与类似,但返回值是。发送数据,将数据发送到,形式为,指定远程地址发送,返回值是发送的字节数发送的报文是类型,发送的报文是类型,在发送前要记得编码。 UDP 和 TCP 的区别   TCP UDP 连接性 面向连接 面向无连接 传输可靠性 可靠 不可靠 传输模式 流 数据报 应用场景 传输大量的数据 少量数据 速度 慢 快 T...

    waterc 评论0 收藏0

发表评论

0条评论

MadPecker

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<