python-socket练手

一、部分概念 
   socket(套接字):
        源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

    套接字地址:主机—端口对 
        如果一个套接字像电话插孔——允许通信的基础设施,那么主机名和端口号就像区号和电话号的组合。关于套接字,一般有面向连接的套接字与无连接的套接字。关于面向连接的套接字再进行通信前必须先建立一个连接,实现该连接的主要协议是传输控制协议,也就是我们常说的TCP,为了创建TCP套接字,我们必须使用SOCK_STREAM作为套接字类型。
        反之,关于无连接的套接字,其主要协议为用户数据报协议,英缩为UDP,套接字类型为SOCK_DGRAM。
二、创建TCP服务器
    ss.socket()
    ss.bind()
    ss.listen()
    inf_loop:
        cs=ss.accept()
        comm_loop()
            cs.recv()/cs.send()
    ss.close()
注释:
    创建服务器套接字
    套接字与地址绑定
    服务器监听
    服务器无限循环
    接受客户端链接
    通信循环
    对话(接收|发送)
    关闭套接字
    关闭服务器套接字(可选)
三、创建TCP客户端
    cs=sockt()
    cs.connect()
    
comm_loop()
              cs.recv()/cs.send()
    cs.close()
四、例子
   1、HTML代码:写一个简单的网页,用于看一些视频,利用按钮控制视频的隐藏与现实,会用到一些简单的JS/css,贴代码如下:
    
<!doctype html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>FILM</title>
<meta="keyword" content="">
<meta name="description" content="">
</head>
<style type="text/css">
*{margin: =0;padding: 0;}
body{background: url("images/bc.jpg");font-size: 12px;font-family: "微软雅黑";color:#666}
#div1{
width: 690px;
height:340px;
background:#abcdef;
margin:100px auto 0;
border-radius:10px;
padding:10px 0 0 10px;
display: none;
}
.btn{
width: 100px;
height: 50px;
background: #abcdef;
display:block;
text-align: center;
line-height: 50px;
text-decoration: none;
color: #fff;
font-size:"微软雅黑";
border-radius: 5px;
margin: 100px auto 0;
}
.btn:hover{
background: #ff6700;
color: #fff;
}
</style>
<script>
function showhide(){
var bt=document.getElementById('div1');
if (bt.style.display=='block') {
bt.style.display='none';
} else{
bt.style.display='block';
};
}

</script>


<body>
<input type="button" class="btn" value="FILM" οnclick="showhide()"/>
<div id="div1" class="show">
<embed src=' http://player.youku.com/player.php/sid/XMTY1NDE2MjQ4MA==/v.swf' allowFullScreen='true' quality='high' width='680' height='330' align='middle' allowScriptAccess='always' type='application/x-shockwave-flash'></embed>
</div>

</body>

</html>

2、Python代码:
 
#!/user/bin/python
#-*-coding:utf-8 -*-
import time 
import socket
def handle_request(client):
buf=client.recv(1024)
client.send("HTTP/1.1 200 OK \r\n\r\n")
with open ('index1.html','r') as f :
html=f.read()
client.send(html)
print buf
def main():
        sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        sock.bind(('localhost',800))
        sock.listen(5)
        
        while True:
                connection,address = sock.accept()
                handle_request(connection)
                connection.close()


if __name__ == '__main__':

main()  



**********************************************************************************************************************************************************

附带干货:nmap简易代码:

# -*- coding:utf-8 -*-


import socket
import sys


def ip_validation(host):
try:
socket.inet_aton(host)
return True
except socket.error:
return False
#ip_validation 检测IP是否可用


def connection_validation(host,port):
if not ip_validation(host):
return False


sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.settimeout(2)
result = sock.connect_ex((host,port))#如果连接成功,会返回一个0
if result == 0:
print ("open")
else:
print ("colse")
sock.close()


if __name__=='__main__':



host = "192.168.1.1"
port = 445
print (ip_validation(host))
connection_validation(host,port)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值