Python socket (单线程)

client, 客户端 code :    客户端主要方法, s.send();   s.sendall();   s.recv();   s.connect()

class Client(object):

  def __init__(self, ip, PortNo=XXX):      self.ip = ip      self.PortNo = PortNo

  def connect_socket(self):      count = 1      status = 0      while count < 6 and status == 0:                                                                      # 尝试5次 在 ip::PortNo 上创建socket 链接.          print ("Attempt %s time(s) to open socket port" % count)          try:              self.soct = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                 # 定义socket 类型(TCP)          except socket.error, e:                                                                           # socket error 异常处理, 这里把异常catch住,代码可以继续运行. 函数结尾返回一个函数运行结果标志位,供main函数或者调用函数判断.              print ("error occur during creating socket: : %s" % e)          try:              self.soct.connect((self.ip, self.PortNo))              status = 1              print ("Socket opened success:  %s :: %s" % (self.ip, self.PortNo))          except socket.error, e:                                                                           # 常见 socket error 有 目标地址错误,PortNo 被占用, 防火墙 等原因              print ("Address or port related error detected during connect to server: : %s" % e)              count += 1              time.sleep(3)      if status == 0:          return False      return True                                                                                           # 返回函数运行结果

server, 服务端code,

    服务端主要方法, s.recv();   s.send();   s.sendall();    s.bind();   s.close()
class Server(object):
def __init__(self, ip, PortNo=XXX):    self.ip = ip    self.PortNo = PortNo
def run_server(self):  self.soct = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                            # 定义socket 类型(TCP)  self.scot.bind((self.ip,self.PortNo))                                                                      self.soct.listen(1)                                                                                      # socket 监听的数量.  conn,addr = self.soct.accept()                                                                           # 接受 scoket 链接请求.   print("Socket has been established with %s :: %s" % (conn,addr))  while True:    data_r = self.soct.recv(1024)                                                                         # 从socket 上接受数据    print("Received %s from socket" % data_r)    self.soct.sendall("data_s")                                                                           # 向socket 发送数据    print("Send data %s to socket" % data_s)    self.soct.close()                                                                                        # 结束所建立的 socket 方法.

				
时间: 2024-08-23 23:40:53

Python socket (单线程)的相关文章

【Python之旅】第五篇(二):Python Socket单线程+阻塞模式

前面第五篇(一)中的一个Socket例子其实就是单线程的,即Server端一次只能接受来自一个Client端的连接,为了更好的说明socket单线程和阻塞模式,下面对前面的例子做修改. 1.单线程+阻塞+交互式 前面的例子是单线程阻塞和非交互式的,现在改写为交互式的,即不会执行一次就结束,希望达到的效果是,发送的数据由User输入,然后Server端进行接收. Server端:与上个例子一样,并没有什么变化 import socket                #导入socket类   HO

python - socket通信笔记

参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket通信:https://yq.aliyun.com/articles/40745?spm=5176.100239.blogcont40768.17.FIFTZv 1.socket使用方法 a.在python中使用socket时要iamport socket b.在使用socket中又服务器端和客户端之

Python Socket 编程——聊天室演示样例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

Python Socket,How to Create Socket Server? - 网络编程实例

文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programing in Python: Part2: Programing sockets servers. 在所有的通信实例中,都分为Client 和Server. 其中:Client是请求的发起点,Server是使用Socket接收传入的值并且提供返回数据. Server的职能如下: 1>.创建/打开一个so

python socket和HTTP入门

python迭代器: iterator=iter(obj) iterator.next() python函数: def function(*args): 传元组列表参数. def function(**args): 传字典列表参数. Django时区设置:setting.py里面的time_zone=Asian/Shanghai PostgreSQL时区设置:postgres.conf配置文件修改time_zone=Asian/Shanghai python socket模块: 服务器端: im

python socket编程入门(编写server实例)+send 与sendall的区别与使用方法

python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参数代表地址家族,可为AF_INET或AF_UNIX.AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信. type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字). 2. 第二步是将socket绑定到指定地址.这

【Python之旅】第五篇(一):Python Socket通信原理

只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理. 1.Socket socket也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求.可以列举中国移动或者是中国电信等的电话客服,当然,也可以看下面的图片来作形象的说明. socket起源于Unix,而Unix/Linux基本哲学之一就是:一切皆文件,即都可以用"打开open-

python/socket编程之粘包

python/socket编程之粘包 粘包: 只有TCP有尿包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提取数据,当然也有可能是3k或者多k提取数据,也就是说,应用程序是不可见的,因此TCP协议是面来那个流的协议,这也是容易出现粘包的原因而UDP是面向笑死的协议,每个UDP段都是一条消息,应用程序必须以消息为单位提取数据,不能一次提取任一字节的数据,这一点和TCP是很同的.怎样定义消息呢?认为对方一次

python socket 超时设置 errno10054

python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接.问题解决方案: 前几天使用python读取网页.因为对一个网站大量的使用urlopen操作,所以会被那个网站认定为攻击行为.有时就不再允许下载.导致urlopen()后,request.read()一直卡死在那里.最后会抛出errno 10054. 这 个错误是connection reset by peer.也就是传说的远端主机重置了此连接.原因可能是socket超时时间过长:也可能是req