Python-Socket

socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过“套接字”向网络发出请求或者应答网络请求

socket既是一种特殊文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

socket和file的区别

file模块是针对某个指定文件进行【打开】【读写】【关闭】

socket模块是针对服务器端和客户端socket进行【打开】【读写】【关闭】

实例:

在wen页面中访问

返回http 1.1 200 OK和HelloWorld

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

#!/usr/bin/env python #coding:utf-8 import socket   def handle_request(client):     client.send("HTTP/1.1 200 OK\r\n\r\n")     client.send("Hello, World")     def main():     # 创建sock对象     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     # 监听端口     sock.bind(('localhost',8080))     # 开始监听     sock.listen(5)         while True:         # 阻塞,等连接的请求,直到有请求来连接         # connection:代表客户端sock的对象         # address:客户端IP地址         connection, address = sock.accept()         buf = connection.recv(1024)         print buf         connection.send('http1.1 200 OK\r\n\r\n')         connection.send("Hello World")         connection.close()   if __name__ == '__main__':     main()

实例:10086服务

服务端:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

import socket   ip_port = ('127.0.0.1',8888) sk = socket.socket() sk.bind(ip_port) sk.listen(5)   while True:     conn,address =  sk.accept()     conn.sendall('欢迎致电 10086,请输入1xxx,0转人工服务.')     Flag = True     while Flag:         data = conn.recv(1024)         if data == 'exit':             Flag = False         elif data == '0':             conn.sendall('通过可能会被录音.........一大推')         else:             conn.sendall('请重新输入.')     conn.close()

客户端:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

import socket ip_port = ('127.0.0.1',8888) sk = socket.socket() sk.connect(ip_port) sk.settimeout(5)   while True:     data = sk.recv(1024)     print 'receive:',data     inp = raw_input('please input:')     sk.sendall(inp)     if inp == 'exit':         break   sk.close()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【专业技术】Android如何保证安全?

存在问题: 那么多小伙伴想root,root后好处多多你懂的,那么开发的小伙伴最想关心的是安全机制问题。 解决方案: 我们就以此来了解一下Android 安全...

40560
来自专栏安恒网络空间安全讲武堂

技术分享 | 深入分析APPCMS<=2.0.101 sql注入漏洞

目录 0x00 前言 0x01 漏洞分析--代码审计 0x02 漏洞利用 1.sql注入出后台账号、密码、安全码 2.二次漏洞利用:sql注入+csrf...

43580
来自专栏Java3y

Struts2【拦截器】

什么是拦截器 拦截器Interceptor…..拦截器是Struts的概念,它与过滤器是类似的…可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Str...

33150
来自专栏Java帮帮-微信公众号-技术文章全总结

Java开发必会框架Struts2第二天

一、封装请求正文到对象中(非常重要) 1、静态参数封装 在struts.xml配置文件中,给动作类注入值。调用的是setter方法。 ? 原因:是由一个stat...

39780
来自专栏决胜机器学习

设计模式专题(十)——观察者模式

设计模式专题(十)——观察者模式 (原创内容,转载请注明来源,谢谢) 一、概述 观察者模式(Observer),又称做发布-订阅模式(Publish/Subs...

36990
来自专栏二次元

中国电信登录RSA算法+分析图文

一、用到的工具 1.ie浏览器(9以上的版本) 2.httpwatch (中英文都可以) 3.js调试工具 目标网站:http://x...

11200
来自专栏小白安全

分享几个绕过URL跳转限制的思路

大家对URL任意跳转都肯定了解,也知道他的危害,这里我就不细说了,过~ 大家遇到的肯定都是很多基于这样的跳转格式 http://www.xxx.x...

88460
来自专栏idba

socket 编程初探

一 简介 socket是两个应用程序进行通信的管道,这两个应用程序可以在同一台机器上,也可以位于两台不同的机器上,相同的网络或者不同网络之间的。Pyth...

12440
来自专栏木子墨的前端日常

nginx反向代理跨域基本配置与常见误区

最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器。同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决...

29330
来自专栏机器学习算法与Python学习

Python之运行实现原理

来源:@mozillazg 链接:https://mozillazg.com/2016/04/apm-python-agent-principle.html 本...

381140

扫码关注云+社区

领取腾讯云代金券