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 # 返回函数运行结果
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 (单线程)的更多相关文章
- Python Socket单线程+阻塞模式
Python之旅]第五篇(二):Python Socket单线程+阻塞模式 python Socket单线程 Socket阻塞模式 串行发送 摘要: 前面第五篇(一)中的一个Socket例子其实就是 ...
- python socket单线程通信
注意 socket通信默认的情况下是属于阻塞形式通信,在recv与accept函数会进行阻塞 1.客户端正常退出的情况下,server端的con的通道会正常的关闭,recv直接赋值为空 2.在wind ...
- 第五十三节,socket模块介绍,socket单线程通讯
socket单线程通讯,只能单线程通讯,不能并发 socket是基于(TCP.UDP.IP)的通讯.也叫做套接字 通讯过程由服务端的socket处理信息发送,由客户端的socket处理信息接收. so ...
- Python Socket请求网站获取数据
Python Socket请求网站获取数据 ---阻塞 I/O ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...
- python socket编程 实现简单p2p聊天程序
目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后 ...
- python - socket通信笔记
参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- Python Socket 网络编程
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- python socket发送魔法包网络唤醒开机.py
python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...
随机推荐
- Setup Factory 关闭正在运行的程序
--在全局函数中增加 适用用Setup Factory 9 function FindAndCloseProcessByName(strName) local tblProcesses = Wind ...
- @ViewDebug.ExportedProperty的使用
原文链接:http://daemon369.github.io/android/2014/06/12/android-viewdebug-exportedproperty/ http://www.eo ...
- spring 自动扫描、注册的类是否可以定义构造函数
答案是肯定的. 方法如下: @Service public class SimpleMovieLister { private MovieFinder movieFinder; @Autowired ...
- hdu 3579 Hello Kiki (中国剩余定理)
Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 在xaf 14 中实现 Tonyyang原文中的action权限
具体实现过程,主要修改了以下几个地方: 第一:角色和用户类中需要修改成SecurityStrategy的方式: 具体代码 MySecurityRole: using System; using Sys ...
- ww
#!bin/python #coding=utf-8 """ Create by he """ import sys import re i ...
- ORACLE 导出(exp) & 导入(imp)
导出(exp) & 导入(imp) 利用Export可将数据从数据库中提取出来,就是将select的结果存到一个FS二进制文件上 利用Import则可将提取出来的数据送回到Ora ...
- with try catch 作用域的问题
with({}){}和try{}catch(e){}会临时改变代码执行的作用域, var foo="abc"; with({foo:"d"}){ functio ...
- HR开发 SuccessFactors与HCM数据映射
SuccessFactors Employee Central ----->> HCM 增强点 ES_PAOCF_EC_TOOLS HCM ----->> SuccessFac ...
- 中国能用的NTP服务器地址
133.100.11.8 prefer210.72.145.44203.117.180.36131.107.1.10time.asia.apple.com64.236.96.53130.149.17. ...