socket(套接字):
源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>
2、Python代码:
#!/user/bin/python
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)