浏览器与Server交互:

import socket

def handle_request(client):
buf = client.recv(1024)
client.send('HTTP/1.1 200 OK\r\n\r\n') def main():
#创建socket对象
socketServer = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#监听端口
socketServer.bind(('127.0.0.1',8001))
#开始监听
socketServer.listen(5) while True:
#阻塞,deng...
#直到有请求连接
print '.'*30
connection,address = socketServer.accept()
#connection,代表客户端socket对象
#address,客户端地址
#handle_request(connection)
buf = connection.recv(1024)
print buf
connection.send('HTTP/1.1 200 OK\r\n\r\n')
connection.send('Hello World')
connection.close() if __name__ == '__main__':
main() Client与Server交互:
Client端:
import socket

socket_client = socket.socket()
socket_client.connect(('127.0.0.1',8009))
socket_client.settimeout(5) while True:
inp = raw_input('please input:')
socket_client.sendall(inp)
res_size = socket_client.recv(1024)
print 'going to recv data size:',res_size,type(res_size)
total_size = int(res_size)
receive_size = 0
while True:
data = socket_client.recv(1024)
receive_size+=len(data)
print '---data---'
if total_size == receive_size:
print data
print '---not data---'
break
print data
if inp == 'exit':
break
socket_client.close() 单线程Server:
import socket

socketServer = socket.socket()
socketServer.bind(('localhost',8341))
socketServer.listen(5)
while True:
print 'waiting...'
conn,addr = socketServer.accept()
#最多接受size
client_data = buf = conn.recv(1024)
print client_data
conn.send('wo shi fu wu duan')
conn.close() 多线程Server:
import SocketServer
import os class MyServer(SocketServer.BaseRequestHandler):
def handle(self):
# print self.request,self.client_address,self.server
# conn = self.request #每一个客户端
print 'get connection from',self.client_address
while True:
data = self.request.recv(1024)
print "Recv from [%s] cmd :%s"%(self.client_address,data)
cmd_res = os.popen(data).read()
self.request.send(str(len(cmd_res)))
self.request.sendall(cmd_res) if __name__ == '__main__':
server = SocketServer.ThreadingTCPServer(('127.0.0.1',8009),MyServer)
server.serve_forever()
 

												

最新文章

  1. jQuery 中bind(),live(),delegate(),on() 区别(转)
  2. ReportDesigner中实现保存,保存所有,注册ICommandHandler方式实现
  3. 循序渐进Python3(十二) --2--  web框架之django简单实现oracle数据库操作
  4. 优化SQL查询:如何写出高性能SQL语句
  5. bing壁纸xml地址
  6. Codeforces 375
  7. 为什么 JavaScript 中基本数据类型拥有 toString 之类方法?
  8. VBoxManage 命令行使用
  9. hdu1532(最大流)
  10. 浅谈MacOS-20155205郝博雅
  11. Vux配置指南
  12. log4j不生成日志文件的问题
  13. Mybatis源码分析--关联表查询及延迟加载原理(二)
  14. 2019-3-26WinForm窗体间如何传值的几种方法
  15. Android-Could not find method implementation() for arguments
  16. Linux版的Mimikaz
  17. java进程的守护进程脚本
  18. Linux基础命令---bzmore
  19. 8 stark组件 展示数据
  20. thinkphp3.2笔记(5)创建项目 创建模型 实例化

热门文章

  1. worker进程中线程的分类及用途
  2. Day1:T1 模拟 T2 拓扑排序
  3. Visual Studio 2013 发布正式版
  4. [转]iOS hacking resource collection
  5. Sublime2 Text编辑器使用技巧
  6. js框架漫谈
  7. GCD与多线程
  8. javascript生成自定义的arcgis simpletoolbar
  9. DES加密解密 与 Cookie的封装(C#与js互相加密解密)
  10. MS SQL SERVER 2008 使用OBJECT_ID判断临时表是否存在