#练习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. 关于react16.4——错误边界

    过去,组件内的 JavaScript 错误常常会破坏 React 内部状态,并导致它在下一次渲染时产生神秘的错误.这些错误总会在应用代码中较早的错误引发的,但 React 并没有提供一种方式能够在组件 ...

  2. iOS 时间校准解决方案

    背景 在 iOS 开发中,凡是用到系统时间的,都要考虑一个问题:对时.有些业务是无需对时,或可以以用户时间为准的,比如动画用到的时间.一些日程类应用等.但电商相关的业务大都不能直接使用设备上的时间,而 ...

  3. Python3各种进制之间的转换方法

    一.2/8/10/16进制互转 1.1 2/8/10/16进制赋值 # 二进制赋值以0b打头 a = 0b1000 # 八进制赋值以0o打头,第一个是数字0第二个是字母o b = 0o1100 # 十 ...

  4. 使用Redis数据库(1)(三十三)

    Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch, So ...

  5. oracle create tablespace

    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; sqlplus shybt/shybt@127.0.0.1:1521/orcl Cr ...

  6. vm安装diagram

        xxx1234ZZ   xxx1234ZZ@    

  7. forget stereo step word out8

      1★ stereo st əri əu 立体的   2★ step st əp 后,前妻所生,步骤  

  8. Oracle.练习题

    2018-07-31 ---练习3 ---创建sporter表 create table sporter( sporterid ) constraint sport_id primary key, s ...

  9. ie浏览器get url返回404问题

    昨晚同事说之前给的接口不能get方式的,直接在ie浏览器访问返回404,说明是参数有问题. 同样的接口使用curl和postman请求都正常,其他ie之外的浏览器也都正常响应. 记录下排查过程: 问题 ...

  10. DoTween动画中的几种函数。

    1.transform.DOLocalMoveX(200, 1).From(true); 动画默认是从当前位置沿着X轴移动到x=200的位置. 加上Form变为从X=200的位置移动到当前位置,fro ...