摘要:网络编程学习本文主要介绍网络通信,以及的通信例子网络通信是嵌套字的意思,可以理解为与们间的在线会话。关于通信可以看这里简单理解多线程下开启一个对于服务端,需要做件事情开启设置配置绑定端口帧监听,收发包多线程关于报错模块提供个函数。
http://homeway.me/
socket是嵌套字的意思,可以理解为server与client们间的在线会话。
关于socket通信可以看这里:
http://queengina.com/2014/10/09/简单理解Socket/
对于server服务端,python socket需要做4件事情
1.开启socket
2.设置配置socket
3.绑定端口
4.帧监听,收发包
=> server.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
import socket
import threading
import time
import sys
clients = []
class RecvMsg(threading.Thread):
def __init__(self, sock):
threading.Thread.__init__(self)
self.sock = sock
def run(self):
global clients
while True:
msg = self.sock.recv(512)
print "recv=>",msg
for client in clients:
if client != self.sock:
message = {}
message["id"] = self.sock
message["time"] = time.time()
message["type"] = "server send"
print "send=>", message
client.send( str(message) )
pass
pass
def main( port ):
sock = socket.socket()
sock.bind(( socket.gethostname(), int(port) ))
sock.listen(5)
while True:
client, address = sock.accept()
print "a client connected"
if client not in clients:
clients.append(client)
recvMsg = RecvMsg(client)
recvMsg.start()
sock.close()
if __name__ == "__main__":
port = sys.argv[1]
main( port )
python server.py 56565
=> client.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
import socket
import threading
import os,time
import sys
class RecvMsg(threading.Thread):
def __init__(self, sock):
threading.Thread.__init__(self)
self.sock = sock
def run(self):
while True:
recvMsg = self.sock.recv(512)
print "recv=>",recvMsg
def sendMsg(sock):
msg = time.time()
message = {}
message["id"] = os.getpid()
message["msg"] = msg
print "send=>", message
sock.send(str(message))
def main( port ):
sock = socket.socket()
sock.connect(( socket.gethostname(), int(port) ))
recvMsg = RecvMsg(sock)
recvMsg.start()
while True:
time.sleep(1.5)
sendMsg(sock)
if __name__ == "__main__":
port = sys.argv[1]
main( port )
python client.py 56565
socket模块提供4个error函数。
1.关于一般I/O和通信有关的问题 socket.error
2.与查询地址有关 socket.gaierror
3.与其他地址错误有关 socket.herror
4.与上个socket调用timeout有关 socket.timeout
举个例子:(保存为error.py)#!/usr/bin/python
# -*- coding:utf-8 -*-
from socket import *
import time,sys
HOST = socket.gethostname()
PORT = sys.argv[0]
BUFSIZ = 1024
ADDR = ( HOST, int(PORT) )
SerSock = socket(AF_INET, SOCK_STREAM)
try:
SerSock.bind(ADDR)
except socket.error, e:
print "socket.error=>",e
except socket.gaierror, e:
print "socket.gaierror=>",e
except socket.herror, e:
print "socket.herror=>",e
SerSock.listen(5)
while True:
print "waiting for message..."
CliSock, addr = tcpSerSock.accept()
print "...connect from :", addr
while True:
data = CliSock.recv(BUFSIZ)
if not data:
break
CliSock.send("[%s] %s" % (time.ctime(), data))
CliSock.close()
SerSock.close()
python error.py 54545
-by小草
2014-10-21 22:34:54
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/37443.html
摘要:参考链接面向对象编程模型现在的很多编程语言基本都具有面向对象的思想,比如等等,而面向对象的主要思想对象,类,继承,封装,多态比较容易理解,这里就不多多描述了。 前言 在我们的日常日发和学习生活中会常常遇到一些名词,比如 命令式编程模型,声明式编程模型,xxx语言是面向对象的等等,这个编程模型到处可见,但是始终搞不清是什么?什么语言又是什么编程模型,当你新接触一门语言的时候,有些问题是需...
摘要:第层网络的一个值得注意的示例是以太网,其中表示为子层。与其他方案相比,相对容易安装和配置。与不同,不使用网络。网络策略是其最受追捧的功能之一。 本文将在介绍技术原理和相应术语的基础上,再集中探索与详细对比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,对比介绍它们的原理、使用方法、适用场景和优缺点等。 showImg(https://segmentfaul...
阅读 2438·2020-06-12 14:26
阅读 2734·2019-08-29 16:41
阅读 2093·2019-08-29 15:28
阅读 2649·2019-08-26 13:43
阅读 973·2019-08-26 13:37
阅读 2984·2019-08-23 18:13
阅读 3008·2019-08-23 15:31
阅读 1171·2019-08-23 14:10