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 # 返回函数运行结果

   Client 端发消息

while True:
cmd = raw_input("respond")
if cmd == "exit":
break
elif len(cmd) == 0:
continue
s.send(cmd)
date = s.recv(1024)
print ("rec:",date)
  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 上接受数据
if not data_r:
break #若已连接的client端断开,退出
    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 方法.
												

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

  1. Python Socket单线程+阻塞模式

    Python之旅]第五篇(二):Python Socket单线程+阻塞模式 python Socket单线程 Socket阻塞模式 串行发送 摘要:  前面第五篇(一)中的一个Socket例子其实就是 ...

  2. python socket单线程通信

    注意 socket通信默认的情况下是属于阻塞形式通信,在recv与accept函数会进行阻塞 1.客户端正常退出的情况下,server端的con的通道会正常的关闭,recv直接赋值为空 2.在wind ...

  3. 第五十三节,socket模块介绍,socket单线程通讯

    socket单线程通讯,只能单线程通讯,不能并发 socket是基于(TCP.UDP.IP)的通讯.也叫做套接字 通讯过程由服务端的socket处理信息发送,由客户端的socket处理信息接收. so ...

  4. Python Socket请求网站获取数据

     Python Socket请求网站获取数据 ---阻塞 I/O     ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...

  5. python socket编程 实现简单p2p聊天程序

    目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后 ...

  6. python - socket通信笔记

    参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...

  7. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  8. Python Socket 网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  9. python socket发送魔法包网络唤醒开机.py

    python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...

随机推荐

  1. The processing instruction target matching ''[xX][mM][lL]" is not allowed

    报错的来源是: <?xml version="1.0" encoding="UTF8"?> 解决方案::,一般是WSDL的头文件的格式出了问题,比如 ...

  2. MongoDB数据导入导出成csv或者json

    1. 从远程数据表拉取数据到本地json文件 mongoexport --host 远程服务器IP --port 远程服务器端口 --username 远程数据库用户名 --password 远程数据 ...

  3. spring 整合hibernate

    1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...

  4. web.py+html+mysql实现web端小系统的问题汇总

    利用web.py+html(bootstrap)+mysql实现了一个小型的设备管理系统,在这个过程中遇到很多问题,将问题及解决方案总结如下,有遇到类似问题的同学,希望可以帮到你们. 1.关于中文的编 ...

  5. 从SQL下载大量数据到Excel

    之前不知设计原理,发生了大量数据(超过100w行)直接从数据库读取加载到网页中,直接导致内存溢出. Rediculous! 所以,现在改为分页查询到页面中. 由于其有全局逻辑,故折中每次加载1w条数据 ...

  6. SQL Server中 ldf 文件过大的解决方法

    在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为"自动收缩"外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下:  - 第一步:清空日志  ...

  7. JS的prototype

    初步理解: 在说prototype和constructor之前我们先得看几个例子. 1 2 3 4 function name(obj){     alert(obj)//"uw3c&quo ...

  8. Light OJ 1032 - Fast Bit Calculations(数学)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1032 题目大意:一个十进制数变化为二进制,那么对于这个数,如果连着两个二进制位 ...

  9. JQUERY删除操作

    var path = '<%=request.getContextPath()%>/baseReorganizeController/deleteBaseReorganize';      ...

  10. mysql在linux下不区分大小写

    1.先停止mysql service mysql stop 2.如果用rpm直接安装的mysql,路径在:/usr/下,查找my.cnf. 3.在[mysqld]下添加: lower_case_tab ...