#练习3:TCP协议+while循环
服务端:
import socket #socket模块
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
HOST='127.0.0.1'
PORT=8085
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP
s.bind((HOST,PORT)) #套接字绑定的IP与端口
s.listen(1) #开始TCP监听,listen中的参数表示可以多少客户端来进行连接
while 1:
print u"开始连接"
conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址
print'Connected by',addr #输出客户端的IP地址
while 1:
data=conn.recv(1024) #把接收的数据实例化
print data
conn.sendall(u'从服务得到结果:'.encode("gbk")+data.upper())
conn.close() #关闭连接 客户端:
import sys
import socket
reload(sys)
sys.setdefaultencoding("utf-8")
HOST='127.0.0.1'
PORT=8085
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP
s.connect((HOST,PORT)) #要连接的IP与端口
while 1:
cmd=raw_input(u"向服务器发送命令:".encode("gbk")) #与人交互,输入命令
s.sendall(cmd) #把命令发送给对端
data=s.recv(1024) #把接收的数据定义为变量
print data #输出变量
s.close() #关闭连接 #练习4:TCP协议+while循环+异常捕获
服务端:
import socket #socket模块
import commands #执行系统命令模块
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
HOST='127.0.0.1'
PORT=8086
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#定义socket类型,网络通信,TCP
s.bind((HOST,PORT)) #套接字绑定的IP与端口
s.listen(5)
#开始TCP监听,listen中的参数表示可以多少客户端来进行连接
while 1:
print u"开始接收数据"
conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址
print'Connected by',addr #输出客户端的IP地址
while 1:
try:
data=conn.recv(1024) #把接收的数据实例化
print data
conn.sendall(u'服务返回结果'.encode("gbk")+data.upper())
except Exception:
conn.close() #关闭连接
break 客户端:
import socket
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
HOST='127.0.0.1'
PORT=8086
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#定义socket类型,网络通信,TCP
s.connect((HOST,PORT)) #要连接的IP与端口
times=3
while times>0:
cmd=raw_input(u"向服务器发送命令:".encode("gbk")) #与人交互,输入命令
s.sendall(cmd) #把命令发送给对端
data=s.recv(1024) #把接收的数据定义为变量
print data #输出变量
times-=1
s.close() #关闭连接 #练习5:代码优化,发送多条
服务端:
import time
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 8009))
sock.listen(5)
while True:
print u"服务开始监听状态"
time.sleep(0.1)
connection,address = sock.accept()
while 1:
try:
connection.settimeout(5)
buf = connection.recv(1024)
print "got message from client:",buf
if buf == '':
print ""
connection.send(u'您做的操作是:选择1'.encode("gbk"))
elif buf == '':
connection.send(u'您做的操作是:选择2'.encode("gbk"))
elif buf == "close":
connection.send(u'您做的操作是:选择close'.encode("gbk"))
connection.close()
break
except socket.timeout:
print u'连接超时'
connection.close()
break
except Exception,e:
print e
connection.close()
break 客户端:
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 8009))
import time
time.sleep(2)
sock.send('')
print sock.recv(1024)
sock.send('')
print sock.recv(1024)
sock.send('close')
print sock.recv(1024)
print "Done!"
sock.close() #练习6:传输+command命令
服务端:
import os
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 8001))
sock.listen(5)
while True:
connection,address = sock.accept()
try:
connection.settimeout(5)
command = connection.recv(1024)
print command
result=os.popen(command)
print result
print result.name
connection.send(result.name)
connection.send(result.read())
except socket.timeout:
print 'time out'
connection.close() 客户端:
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 8001))
import time
time.sleep(2)
sock.send('ipconfig')
print "command name:",sock.recv(10)
print "command result:",sock.recv(1024)
sock.close() #练习7:socket传输文件
服务端:
import socket,os,time,struct,threading,SocketServer
host = '127.0.0.1'
port = 12307
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 定义socket类型
sk.bind((host, port)) # 绑定需要监听的Ip和端口号,tuple格式
sk.listen(1) def conn_thread(connection, address):
while True:
try:
connection.settimeout(600)
fileinfo_size=struct.calcsize("128sl")
buf=connection.recv(fileinfo_size)
if buf:
filename,filesize=struct.unpack("20sl",buf)
filename_f=filename.strip("\00")
filenewname=os.path.join("e:\\test4\\", os.path.basename (filename_f))
print u"文件名称:%s,文件大小:%s" %(filenewname,filesize)
recvd_size=0
file=open(filenewname,"wb")
print u"开始传输文件内容"
while not recvd_size==filesize:
if filesize-recvd_size>1024:
rdata=connection.recv(1024)
recvd_size+=len(rdata)
else:
rdata=connection.recv(filesize-recvd_size)
recvd_size=filesize
file.write(rdata)
file.close()
print 'receive done'
# connection.close()
except socket.timeout:
connection.close() while True:
print u"开始进入监听状态"
connection,address=sk.accept()
thread = threading.Thread(target=conn_thread,args=(connection,address))
thread.start()
sk.close() 客户端:
import socket,os,struct
sk=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.connect(("127.0.0.1",12307))
while True:
filepath=raw_input("Please Enter chars:\r\n")
if os.path.isfile(filepath):
fhead=struct.pack("20sl",filepath,os.stat(filepath).st_size)
sk.send(fhead)
print u"文件路径:",filepath
f=open(filepath,"rb")
while True:
filedata=f.read(1024)
if not filedata:
break
sk.send(filedata)
f.close()
print "传输成功"
#sk.close() #练习8:实现多连接
import socket
HOST = '127.0.0.1' # 本地localhost
PORT = 50008
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5)
while True:
print u"开始进入监听状态"
conn,addr = s.accept()#接收连接
print "开始接收连接从: ",addr
while True:
try:
data = conn.recv(1024)
if not data:
break
print "收到",data
msg = u"这是一个多进程服务测试"
conn.sendall(msg.encode("gbk"))
except socket.error:
break
conn.close()

【Python】socket编程-2的更多相关文章

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

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

  2. python/socket编程之粘包

    python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...

  3. PYTHON SOCKET编程简介

    原文地址: PYTHON SOCKET编程详细介绍   Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...

  4. python socket编程笔记

    用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台) 人生苦短之我用Python篇(socket编程) python之路 sock ...

  5. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*- "&q ...

  6. Python Socket 编程示例 Echo Server

    简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...

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

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

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

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

  9. 第九章:Python高级编程-Python socket编程

    第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...

  10. python socket编程详细介绍

    Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...

随机推荐

  1. ADO.NET json数组多条记录执行在DAL层循环(执行存储过程)

    public int UpdateRegdate(tj_book_patient regdatejson) { int temp; SqlParameter[] ps = new SqlParamet ...

  2. Python类的构成元素

    类的构成元素 公共属性:实例化时无需__init__方法绑定到对象,就可以直接使用:普通属性:实例化时 需要__ini__方法绑定到对象之后,才可以直接使用:私有属性:__sex 双下滑杠开头,需要在 ...

  3. weblogic查看版本号教程

    1.查看软件版本号 cd /weblogic/bea/wlserver_10.3/server/lib java -cp weblogic.jar weblogic.version 说明:版本号后边的 ...

  4. Qt之获取子部件

    Qt5.10 QList<QObject*> list_children = this->children(); for(int i=0;i<list_children.siz ...

  5. Java中的标签

    @SuppressWarnings 简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一.可以标注在类.字段.方法.参数.构造方法,以及局部变量 ...

  6. Win10系列:UWP界面布局基础2

    属性设置 在面向对象程序开发中,所提及的属性通常指的是对象的属性.在XAML代码中,定义元素时也可以为其设置属性,例如对于一个TextBox元素,有背景属性.宽度属性和高度属性等.为了满足实际应用的需 ...

  7. Win10系列:VC++绘制几何图形1

    本小节主要介绍如何使用Direct2D来绘制几何图形,其中会使用到FillGeometry函数和FillEllipse函数,FillGeometry函数用于填充几何图形的内部区域,而FillEllip ...

  8. 序列(SEQUENCE)

    序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一 ...

  9. Java单例模式《一》饿汉式

    package com.study.mode; /** * 单例模式:饿汉式. 线程安全. * @ClassName: SingleBean * @author BlueLake * @date 20 ...

  10. TNetHTTPClient 使用

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...