返回顶部
首页 > 资讯 > 后端开发 > Python >Python Socket通讯例子详解
  • 219
分享到

Python Socket通讯例子详解

详解例子通讯 2023-01-31 07:01:38 219人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

创新从模仿开始! python中内置的Socket模块使得网络编程更加简单化,下面就通过两个小小脚本来了解客户端如何与服务器端建立socket。 客户端代码: #clietn.py if __name__ == '__main__

创新从模仿开始!

python中内置的Socket模块使得网络编程更加简单化,下面就通过两个小小脚本来了解客户端如何与服务器端建立socket。

客户端代码:

#clietn.py
if __name__ == '__main__':  #判断是否调用自己本身,如果不是则__name__为脚本名称
import socket  #导入我们所需的socket模块sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  #第一步是创建socket对象。调用socket构造函数 socket = socket.socket( family, type )family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)
sock.connect(('localhost', 7556)) #使用socket的connect方法连接服务器,需要指定服务器端ip与端口

import time
time.sleep(2)
sock.send('1') #处理阶段,客户和服务器将通过send方法和recv方法通信
print sock.recv(1024)
sock.close() #传输结束,客户通过调用socket的close方法关闭连接。

 

服务器端代码:

#server.py
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 7556)) #将socket绑定到指定地址与端口
sock.listen(5)  #使用socket套接字的listen方法接收连接请求,括号中参数指定最多允许5个客户连接到服务器。它的值至少为1。收到连接请求后,这些请求需要排队,如果队列满,就拒绝请求。

while True:
connection,address = sock.accept() #服务器套接字通过socket的accept方法等待客户请求一个连接。调用accept方法时,socket会时入“waiting”状态。客户请求连接时,方法建立连接并返回服务器。accept方法返回一个含有两个元素的 元组(connection,address)。第一个元素connection是新的socket对象,服务器必须通过它与客户通信;第二个元素 address是客户的Internet地址。
try:
connection.settimeout(5)  #设置超时时间
buf = connection.recv(1024) #服务器和客户端通过recv方法通信(传输数据)。
调用recv 时,服务器必须指定一个整数,它对应于可通过本次方法调用来接收的最大数据量。recv方法在接收数据时会进入“blocked”状态,最后返回一个字符 串,用它表示收到的数据。如果发送的数据量超过了recv所允许的,数据会被截短。多余的数据将缓冲于接收端。以后调用recv时,多余的数据会从缓冲区 删除(以及自上次调用recv以来,客户可能发送的其它任何数据)。
if buf == '1':
connection.send('welcome to Python server!') #服务器调用send,并采用字符串形式向客户端发送信息。send方法返回已发送的字符个数。
else:
connection.send('please Go out!')
except socket.timeout:
print 'time out'
connection.close() #传输结束,服务器调用socket的close方法关闭连接。

 

附:完整代码

#!/usr/bin/env python

#clietn.py
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 7556))
import time
time.sleep(2)
sock.send('1')
print sock.recv(1024)
sock.close()

#!/usr/bin/env python


#server.py
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 7556))
sock.listen(5)
while True:
connection,address = sock.accept()
try:
connection.settimeout(5)
buf = connection.recv(1024)
if buf == '1':
connection.send('welcome to python server!')
else:
connection.send('please go out!')
except socket.timeout:
print 'time out'
connection.close()

参考Http://www.2cto.com/kf/201212/180187.html

http://hi.baidu.com/yobin/item/a496a13a7c141948023edc5f

--结束END--

本文标题: Python Socket通讯例子详解

本文链接: https://lsjlt.com/news/191690.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python Socket通讯例子详解
    创新从模仿开始! python中内置的socket模块使得网络编程更加简单化,下面就通过两个小小脚本来了解客户端如何与服务器端建立socket。 客户端代码: #clietn.py if __name__ == '__main__...
    99+
    2023-01-31
    详解 例子 通讯
  • Java使用Socket简单通讯详解
    目录Java实现基于Socket的简单通信 一.ServerSocket1.使用JavaFX写的小界面,方便观察客户端连接情况2.创建ServerSocket并处理客户端连...
    99+
    2024-04-02
  • 详解Android 通过Socket 和服务器通讯(附demo)
    Android 通过Socket 和服务器通讯,是一种比较常用的通讯方式,时间比较紧,说下大致的思路,希望能帮到使用socket 进行通信的人 (1)开启一个线程发送消息&nb...
    99+
    2022-06-06
    和服 服务器 demo socket Android
  • 详解Angular父子组件通讯
    目录概述一、输入输出属性概述二、输入属性三、属性绑定是单向的,从父组件到子组件四、输出属性1、先模拟一个实时变动的IBM的股票价格2、把信息输出出去,告诉组件外部,谁感兴趣谁来订阅3...
    99+
    2024-04-02
  • python3.5实现socket通讯示例(TCP)
    TCP连接: tcp是面向连接的一个协议,意味着,客户端和服务器开发发送数据之前,需要先握手创建一个TCP连接。TCP连接的一端与客户端套接字相互联系,另一端与服务器套接字相联系。当创建该TCP连接的时,我...
    99+
    2022-06-04
    示例 通讯 socket
  • Android Socket通信详解
    一、Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方...
    99+
    2022-06-06
    socket通信 socket Android
  • python socket多线程通讯实例分析(聊天室)
    本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下: #!/usr/bin/evn python """ 这是一个Socket+多进程的例子(聊天服务端) """ i...
    99+
    2022-06-04
    多线程 实例 聊天室
  • 学习 NodeJS 第八天:Socket 通讯实例
    前言 一般来讲,HTTP 是基于文本的“单向”通讯机制。这里所谓的“单向”,乃相对于“双向”而言,因为 HTTP 服务器只需根据请求返还恰当的 HTML 给客户端即可,不涉及客户端向服务端的通讯。这种单向...
    99+
    2022-06-04
    实例 通讯 第八天
  • 实时通信Socket io的使用示例详解
    目录引言1、什么是socket.io2、socket.io的使用3、客户端自带事件4、版本问题引言 最近在工作中,遇到了一个需求,需要和后台服务实时通信,获取各种设备的实时状态、以及...
    99+
    2022-11-16
    Socket io实时通信 Socket io
  • Python Socket编程详解
    目录背景TCP和UDP协议本质上的区别?TCP/IP协议栈、HTTP协议、Socket之间的区别和联系?TCPSocket服务器的通信过程?socket和websocket之间的联系...
    99+
    2024-04-02
  • Python与Java间Socket通信实例代码
    Python与Java间Socket通信   之前做过一款Java的通讯工具,有发消息发文件等基本功能.可大家也都知道Java写的界面无论是AWT或Swing,那简直不是人看的,对于我们这些开发人员还好,如...
    99+
    2022-06-04
    实例 代码 通信
  • Android Socket接口实现即时通讯实例代码
    Android Socket接口实现即时通讯            ...
    99+
    2022-06-06
    即时通讯 socket Android
  • 基于BIO的Java Socket通信详解
    BIO,即阻塞IO,在基于Socket的消息通信过程中,Socket服务端向外部提供服务,而Socket客户端可以建立到Socket服务端的连接,进而发送请求数据,然后等待Socket服务端处理,并返回处理结果(响应)。基于BIO的通信,S...
    99+
    2023-05-30
    bio java socket
  • vue3中的父子组件通讯详情
    目录一、传统的props二、通过modeValue绑定三、事件广播(vue3中$on和$emit已废弃),使用新的插件mitt一、传统的props 通过在父组件中给子组件传值,然后在...
    99+
    2024-04-02
  • 详解Java Socket通信封装MIna框架
    目录核心类各个击破IoServiceIoFilterIoHandler总结核心类 IoService :Mina中将服务端和客户端都看成是服务,这里提供统一接口IoService,这...
    99+
    2024-04-02
  • 详解Python Socket网络编程
    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页、QQ 聊天、...
    99+
    2022-06-04
    详解 网络编程 Python
  • python实现socket简单通信的示例代码
    首先先来简单介绍下socket: (具体更详细介绍的可以在网上找找,都讲得非常详细),这里主要是我自己的一些理解。 socket是在应用层与传输层之间的一个抽象层,它的本质是编程接...
    99+
    2024-04-02
  • ​java socket通讯中文乱码问题怎么解决
    在Java Socket通讯中,中文乱码问题通常是由于字符编码不一致引起的。可以尝试以下几种解决方案: 统一字符编码:在通讯的两...
    99+
    2023-10-21
    ​java socket
  • 通讯录项目详解
                         &n...
    99+
    2024-04-02
  • python之Socket网络编程详解
    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系。在数学上,网络是一种图,一般认为专指加权图。网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型。在计算机...
    99+
    2022-06-04
    详解 网络编程 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作